diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index ae2994b76c5..a3105e51349 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -452,9 +452,7 @@ public: mMesgCamInfoActor9 = param_9; mMesgCamInfoActor10 = param_10; } - int getMesgCamInfo() { - return mMesgCamInfoBasicID; - } + int getMesgCamInfo() { return mMesgCamInfoBasicID; } void setFontArchive(JKRArchive* arc) { mFontArchive = arc; } void setRubyArchive(JKRArchive* arc) { mRubyArchive = arc; } void setMain2DArchive(JKRArchive* arc) { mMain2DArchive = arc; } @@ -494,9 +492,7 @@ public: f32 getCameraZoomForcus(int i_no) { return mCameraInfo[i_no].mCameraZoomForcus; } - void setMesgCamInfoID(int param_0) { - mMesgCamInfo = param_0; - } + void setMesgCamInfoID(int param_0) { mMesgCamInfo = param_0; } void setStatus(u16 status) { mStatus = status; } s32 checkStatus(u16 flags) { return flags & mStatus; } @@ -914,8 +910,8 @@ s16 dComIfGs_getWarpPlayerAngleY(); s8 dComIfGs_getWarpRoomNo(); BOOL dComIfGs_isOneZoneSwitch(int i_swBit, int i_roomNo); BOOL dComIfGs_isOneZoneItem(int i_swBit, int i_roomNo); -BOOL dComIfGs_isZoneSwitch(int,int); -BOOL dComIfGs_isZoneItem(int,int); +BOOL dComIfGs_isZoneSwitch(int, int); +BOOL dComIfGs_isZoneItem(int, int); void dComIfGs_setLastWarpMarkItemData(const char* stage, cXyz pos, s16 angle, s8 roomNo, u8, u8); u16 dComIfGs_getMaxLifeGauge(); void dComIfGs_setWarpMarkFlag(u8); @@ -1023,8 +1019,8 @@ inline void dComIfGs_setCollectClothes(u8 i_clothesNo) { g_dComIfG_gameInfo.info.getPlayer().getCollect().setCollect(COLLECT_CLOTHING, i_clothesNo); } -inline void dComIfGs_setCardToMemory(char* card_ptr,int dataNum) { - g_dComIfG_gameInfo.info.card_to_memory(card_ptr,dataNum); +inline void dComIfGs_setCardToMemory(char* card_ptr, int dataNum) { + g_dComIfG_gameInfo.info.card_to_memory(card_ptr, dataNum); } inline void dComIfGs_setRodTypeLevelUp() { @@ -1098,7 +1094,6 @@ inline void dComIfGs_offSwitch(int i_no, int i_roomNo) { g_dComIfG_gameInfo.info.offSwitch(i_no, i_roomNo); } - inline BOOL dComIfGs_isSwitch(int i_no, int i_roomNo) { return g_dComIfG_gameInfo.info.isSwitch(i_no, i_roomNo); } @@ -1575,7 +1570,7 @@ inline BOOL dComIfGs_isActor(int i_no, int i_roomNo) { } inline void dComIfGs_offActor(int i_no, int i_roomNo) { - g_dComIfG_gameInfo.info.offActor(i_no,i_roomNo); + g_dComIfG_gameInfo.info.offActor(i_no, i_roomNo); } inline void dComIfGs_putSave(int i_stageNo) { @@ -1752,7 +1747,6 @@ static dAttCatch_c* dComIfGp_att_getCatghTarget(); static void dComIfGp_setBottleStatus(u8 param_0, u8 param_1); bool dComIfGp_getMapTrans(int i_roomNo, f32* o_transX, f32* o_transY, s16* o_angle); - inline void dComIfGp_itemDataInit() { g_dComIfG_gameInfo.play.itemInit(); } @@ -3179,37 +3173,37 @@ inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* param_2, 0, 0); } -inline JPABaseEmitter* dComIfGp_particle_set(u16 param_1, const cXyz* param_2, - const dKy_tevstr_c* param_3, const csXyz* param_4, - const cXyz* param_5, u8 param_6, - dPa_levelEcallBack* param_7, s8 param_8, - const GXColor* param_9, const GXColor* param_10, - const cXyz* param_11) { - return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_1, param_2, param_3, param_4, - param_5, param_6, param_7, param_8, - param_9, param_10, param_11, 1.0f); +inline JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, + const dKy_tevstr_c* param_3, const csXyz* i_rotation, + const cXyz* i_scale, u8 i_alpha, + dPa_levelEcallBack* i_callback, s8 param_8, + const GXColor* i_prmColor, const GXColor* i_envColor, + const cXyz* i_particleScale) { + return g_dComIfG_gameInfo.play.getParticle()->setNormal( + i_resID, i_pos, param_3, i_rotation, i_scale, i_alpha, i_callback, param_8, i_prmColor, + i_envColor, i_particleScale, 1.0f); } -inline JPABaseEmitter* dComIfGp_particle_set(u16 param_1, const cXyz* param_2, const csXyz* param_3, - const cXyz* param_4, u8 param_5, - dPa_levelEcallBack* param_6, s8 param_7, - const GXColor* param_8, const GXColor* param_9, - const cXyz* param_10) { - return g_dComIfG_gameInfo.play.getParticle()->setNormal(param_1, param_2, NULL, param_3, - param_4, param_5, param_6, param_7, - param_8, param_9, param_10, 1.0f); +inline JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, + const csXyz* i_rotation, const cXyz* i_scale, + u8 i_alpha, dPa_levelEcallBack* i_callback, s8 param_7, + const GXColor* i_prmColor, const GXColor* i_envColor, + const cXyz* i_particleScale) { + return g_dComIfG_gameInfo.play.getParticle()->setNormal( + i_resID, i_pos, NULL, i_rotation, i_scale, i_alpha, i_callback, param_7, i_prmColor, + i_envColor, i_particleScale, 1.0f); } -inline JPABaseEmitter* dComIfGp_particle_set(u16 param_0, const cXyz* param_1, const csXyz* param_2, - const cXyz* param_3) { - return dComIfGp_particle_set(param_0, param_1, NULL, param_2, param_3, 0xFF, NULL, -1, NULL, +inline JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, + const csXyz* i_rotation, const cXyz* i_scale) { + return dComIfGp_particle_set(i_resID, i_pos, NULL, i_rotation, i_scale, 255, NULL, -1, NULL, NULL, NULL); } -inline JPABaseEmitter* dComIfGp_particle_set(u16 param_0, const cXyz* param_1, - const dKy_tevstr_c* param_2, const csXyz* param_3, - const cXyz* param_4) { - return dComIfGp_particle_set(param_0, param_1, param_2, param_3, param_4, 0xFF, NULL, -1, NULL, +inline JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos, + const dKy_tevstr_c* param_2, const csXyz* i_rotation, + const cXyz* i_scale) { + return dComIfGp_particle_set(i_resID, i_pos, param_2, i_rotation, i_scale, 255, NULL, -1, NULL, NULL, NULL); } @@ -3249,11 +3243,10 @@ inline JPABaseEmitter* dComIfGp_particle_setColor(u16 param_0, const cXyz* param NULL, NULL, NULL, -1, NULL); } -inline void dComIfGp_particle_setSimple(u16 param_0,cXyz* param_1, - u8 param_2, _GXColor& param_3, - _GXColor& param_4, int param_5, - float param_6) { - g_dComIfG_gameInfo.play.getParticle()->setSimple(param_0,param_1,0,param_2,param_3,param_4,param_5,param_6); +inline void dComIfGp_particle_setSimple(u16 param_0, cXyz* param_1, u8 param_2, _GXColor& param_3, + _GXColor& param_4, int param_5, float param_6) { + g_dComIfG_gameInfo.play.getParticle()->setSimple(param_0, param_1, 0, param_2, param_3, param_4, + param_5, param_6); } inline void dComIfGp_particle_levelEmitterOnEventMove(u32 param_0) { @@ -3265,12 +3258,13 @@ inline JPABaseEmitter* dComIfGp_particle_getEmitter(u32 param_0) { } inline u32 dComIfGp_particle_setSimpleFoot(u32 param_0, u32* param_1, cBgS_PolyInfo& param_2, - cXyz const* param_3, dKy_tevstr_c const* param_4, int param_5, - csXyz const* param_6, cXyz const* param_7, - dPa_levelEcallBack* param_8, s8 param_9, - cXyz const* param_10) { - return g_dComIfG_gameInfo.play.getParticle()->setSimpleFoot(param_0, param_1, param_2, param_3, param_4, param_5, - param_6, param_7, param_8, param_9, param_10); + cXyz const* param_3, dKy_tevstr_c const* param_4, + int param_5, csXyz const* param_6, cXyz const* param_7, + dPa_levelEcallBack* param_8, s8 param_9, + cXyz const* param_10) { + return g_dComIfG_gameInfo.play.getParticle()->setSimpleFoot(param_0, param_1, param_2, param_3, + param_4, param_5, param_6, param_7, + param_8, param_9, param_10); } inline u32 dComIfGp_particle_setPolyColor(u32 param_0, u16 param_1, cBgS_PolyInfo& param_2, diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index 5265deda92d..f8d93aab24d 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -35,7 +35,7 @@ void dKy_GxFog_set(); static void GxFog_set(); static void GxXFog_set(); u8 dKy_pol_argument_get(cBgS_PolyInfo const* i_poly); -void dKy_Sound_set(cXyz param_0, int param_1, unsigned int param_2, int param_3); +void dKy_Sound_set(cXyz i_pos, int param_1, unsigned int i_actorID, int param_3); void dKy_bg_MAxx_proc(void* param_0); void dKy_change_colpat(u8 colpat); void dKy_BossLight_set(cXyz* param_0, _GXColor* param_1, f32 param_2, u8 param_3); diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index 512c55baa83..05cb74ad5dd 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -144,7 +144,10 @@ public: /* 0x544 */ actor_attention_types mAttentionInfo; /* 0x560 */ s16 field_0x560; /* 0x562 */ s16 mHealth; - /* 0x564 */ u8 field_0x564[0x4]; + /* 0x564 */ u8 field_0x564; + /* 0x565 */ u8 field_0x565; + /* 0x566 */ u8 field_0x566; + /* 0x567 */ s8 field_0x567; fopAc_ac_c(); ~fopAc_ac_c(); diff --git a/include/rel/d/a/d_a_disappear/d_a_disappear.h b/include/rel/d/a/d_a_disappear/d_a_disappear.h index 3021b23f152..007f5b6c320 100644 --- a/include/rel/d/a/d_a_disappear/d_a_disappear.h +++ b/include/rel/d/a/d_a_disappear/d_a_disappear.h @@ -1,6 +1,13 @@ #ifndef D_A_DISAPPEAR_H #define D_A_DISAPPEAR_H -#include "dolphin/types.h" +#include "f_op/f_op_actor_mng.h" + +class disappear_class : public fopAc_ac_c { +public: + /* 0x568 */ u8 field_0x568[0x574 - 0x568]; + /* 0x574 */ s16 mDeleteTimer; + /* 0x576 */ u8 field_0x576[0x578 - 0x576]; +}; #endif /* D_A_DISAPPEAR_H */ diff --git a/rel/d/a/d_a_disappear/d_a_disappear.cpp b/rel/d/a/d_a_disappear/d_a_disappear.cpp index 39a8c82a1d6..bb4922808b7 100644 --- a/rel/d/a/d_a_disappear/d_a_disappear.cpp +++ b/rel/d/a/d_a_disappear/d_a_disappear.cpp @@ -1,283 +1,156 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_disappear -// +/** + * d_a_disappear.cpp + * Disappear death effect when an enemy is defeated + */ #include "rel/d/a/d_a_disappear/d_a_disappear.h" -#include "dol2asm.h" -#include "dolphin/types.h" - -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct disappear_class {}; - -struct dPa_levelEcallBack {}; - -struct dKy_tevstr_c {}; - -struct csXyz {}; - -struct _GXColor {}; - -struct 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 { - /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); -}; - -struct Z2AudioMgr { - static u8 mAudioMgrPtr[4 + 4 /* padding */]; -}; - -// -// Forward References: -// - -extern "C" static bool daDisappear_Draw__FP15disappear_class(); -extern "C" static void s_ks_sub__FPvPv(); -extern "C" static void daDisappear_Execute__FP15disappear_class(); -extern "C" static bool daDisappear_IsDelete__FP15disappear_class(); -extern "C" static bool daDisappear_Delete__FP15disappear_class(); -extern "C" static void yami_disappear__FP15disappear_classf(); -extern "C" static void ghost_disappear__FP15disappear_classf(); -extern "C" static void set_disappear__FP15disappear_classf(); -extern "C" static void daDisappear_Create__FP10fopAc_ac_c(); -extern "C" extern void* g_profile_DISAPPEAR[12]; - -// -// External References: -// - -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_createItemFromEnemyID__FUcPC4cXyziiPC5csXyzPC4cXyzPfPf(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void dKy_Sound_set__F4cXyziUii(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -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: -// +#include "JSystem/JKernel/JKRHeap.h" +#include "d/com/d_com_inf_game.h" +#include "d/d_procname.h" /* 804A8F18-804A8F20 000078 0008+00 1/0 0/0 0/0 .text daDisappear_Draw__FP15disappear_class */ -static bool daDisappear_Draw(disappear_class* param_0) { - return true; +static int daDisappear_Draw(disappear_class* i_this) { + return 1; } /* 804A8F20-804A8F6C 000080 004C+00 1/1 0/0 0/0 .text s_ks_sub__FPvPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void s_ks_sub(void* param_0, void* param_1) { - nofralloc -#include "asm/rel/d/a/d_a_disappear/d_a_disappear/s_ks_sub__FPvPv.s" +static void* s_ks_sub(void* i_actor, void*) { + fopAc_ac_c* actor_p = (fopAc_ac_c*)i_actor; + + if (fopAcM_IsActor(actor_p) && fopAcM_GetName(actor_p) == PROC_NPC_KS) { + actor_p->mHealth = 1; + } + + return NULL; } -#pragma pop /* 804A8F6C-804A8FA8 0000CC 003C+00 1/0 0/0 0/0 .text daDisappear_Execute__FP15disappear_class */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daDisappear_Execute(disappear_class* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_disappear/d_a_disappear/daDisappear_Execute__FP15disappear_class.s" +static int daDisappear_Execute(disappear_class* i_this) { + if (i_this->mDeleteTimer != 0) { + i_this->mDeleteTimer--; + } else { + fopAcM_delete(i_this); + } + + return 1; } -#pragma pop /* 804A8FA8-804A8FB0 000108 0008+00 1/0 0/0 0/0 .text daDisappear_IsDelete__FP15disappear_class */ -static bool daDisappear_IsDelete(disappear_class* param_0) { - return true; +static int daDisappear_IsDelete(disappear_class* i_this) { + return 1; } /* 804A8FB0-804A8FB8 000110 0008+00 1/0 0/0 0/0 .text daDisappear_Delete__FP15disappear_class */ -static bool daDisappear_Delete(disappear_class* param_0) { - return true; +static int daDisappear_Delete(disappear_class* i_this) { + return 1; } -/* ############################################################################################## */ -/* 804A9460-804A9464 000000 0004+00 4/4 0/0 0/0 .rodata @3704 */ -SECTION_RODATA static f32 const lit_3704 = 1.0f; -COMPILER_STRIP_GATE(0x804A9460, &lit_3704); - -/* 804A9480-804A9488 000000 0008+00 1/1 0/0 0/0 .data da_name$3684 */ -SECTION_DATA static u8 da_name_3684[8] = { - 0x82, 0x6C, 0x82, 0x6D, 0x82, 0x6E, 0x82, 0x6B, -}; - /* 804A8FB8-804A9080 000118 00C8+00 1/1 0/0 0/0 .text yami_disappear__FP15disappear_classf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void yami_disappear(disappear_class* param_0, f32 param_1) { - nofralloc -#include "asm/rel/d/a/d_a_disappear/d_a_disappear/yami_disappear__FP15disappear_classf.s" -} -#pragma pop +static void yami_disappear(disappear_class* i_this, f32 i_scale) { + static u16 da_name[] = {0x826C, 0x826D, 0x826E, 0x826B}; -/* ############################################################################################## */ -/* 804A9488-804A9494 000008 000A+02 1/1 0/0 0/0 .data da_name$3710 */ -SECTION_DATA static u8 da_name_3710[10 + 2 /* padding */] = { - 0x86, - 0xA7, - 0x86, - 0xA8, - 0x86, - 0xA9, - 0x86, - 0xAA, - 0x86, - 0xAB, - /* padding */ - 0x00, - 0x00, -}; + cXyz scale; + scale.set(i_scale, i_scale, i_scale); + + int n = 3; + if (i_this->field_0x567 == 2) { + n = 4; + } + + for (int i = 0; i < n; i++) { + dComIfGp_particle_set(da_name[i], &i_this->current.pos, NULL, &scale); + } +} /* 804A9080-804A9130 0001E0 00B0+00 1/1 0/0 0/0 .text ghost_disappear__FP15disappear_classf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void ghost_disappear(disappear_class* param_0, f32 param_1) { - nofralloc -#include "asm/rel/d/a/d_a_disappear/d_a_disappear/ghost_disappear__FP15disappear_classf.s" +static void ghost_disappear(disappear_class* i_this, f32 i_scale) { + static u16 da_name[] = {0x86A7, 0x86A8, 0x86A9, 0x86AA, 0x86AB}; + + cXyz scale; + scale.set(i_scale, i_scale, i_scale); + + for (int i = 0; i < 5; i++) { + dComIfGp_particle_set(da_name[i], &i_this->current.pos, NULL, &scale); + } } -#pragma pop - -/* ############################################################################################## */ -/* 804A9464-804A9468 000004 0004+00 0/1 0/0 0/0 .rodata @3787 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3787 = -1.0f; -COMPILER_STRIP_GATE(0x804A9464, &lit_3787); -#pragma pop - -/* 804A9468-804A946C 000008 0004+00 0/1 0/0 0/0 .rodata @3788 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_3788 = 0x3FD53F7D; -COMPILER_STRIP_GATE(0x804A9468, &lit_3788); -#pragma pop - -/* 804A9494-804A94A4 000014 000E+02 1/1 0/0 0/0 .data da_name$3736 */ -SECTION_DATA static u8 da_name_3736[14 + 2 /* padding */] = { - 0x01, - 0x08, - 0x01, - 0x09, - 0x01, - 0x0A, - 0x01, - 0x0B, - 0x01, - 0x0C, - 0x01, - 0x54, - 0x01, - 0x55, - /* padding */ - 0x00, - 0x00, -}; /* 804A9130-804A9364 000290 0234+00 1/1 0/0 0/0 .text set_disappear__FP15disappear_classf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void set_disappear(disappear_class* param_0, f32 param_1) { - nofralloc -#include "asm/rel/d/a/d_a_disappear/d_a_disappear/set_disappear__FP15disappear_classf.s" +static void set_disappear(disappear_class* i_this, f32 i_scale) { + static u16 da_name[] = {0x0108, 0x0109, 0x010A, 0x010B, 0x010C, 0x0154, 0x0155}; + + dKy_Sound_set(i_this->current.pos, 120, fopAcM_GetID(i_this), 10); + + i_fpcM_Search(s_ks_sub, i_this); + + if (i_this->field_0x567 == 3) { + fopAcM_seStart(i_this, JA_SE_CM_MONS_EXPLODE, 0); + ghost_disappear(i_this, i_scale); + } else if (i_this->field_0x567 >= 1) { + fopAcM_seStart(i_this, Z2SE_DARK_VANISH, 0); + yami_disappear(i_this, i_scale * 1.666f); + } else { + fopAcM_seStart(i_this, JA_SE_CM_MONS_EXPLODE, 0); + + cXyz scale; + scale.set(i_scale, i_scale, i_scale); + + i_this->mDeleteTimer = 58; + for (int i = 0; i < 7; i++) { + dComIfGp_particle_set(da_name[i], &i_this->current.pos, NULL, &scale); + } + } } -#pragma pop - -/* ############################################################################################## */ -/* 804A946C-804A9470 00000C 0004+00 0/1 0/0 0/0 .rodata @3825 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3825 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x804A946C, &lit_3825); -#pragma pop - -/* 804A9470-804A9474 000010 0004+00 0/1 0/0 0/0 .rodata @3826 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3826 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x804A9470, &lit_3826); -#pragma pop - -/* 804A9474-804A9478 000014 0004+00 0/1 0/0 0/0 .rodata @3827 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3827 = 50.0f; -COMPILER_STRIP_GATE(0x804A9474, &lit_3827); -#pragma pop - -/* 804A9478-804A9480 000018 0008+00 0/1 0/0 0/0 .rodata @3829 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3829[8] = { - 0x43, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x804A9478, &lit_3829); -#pragma pop /* 804A9364-804A9458 0004C4 00F4+00 1/0 0/0 0/0 .text daDisappear_Create__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daDisappear_Create(fopAc_ac_c* param_0) { - nofralloc -#include "asm/rel/d/a/d_a_disappear/d_a_disappear/daDisappear_Create__FP10fopAc_ac_c.s" +static int daDisappear_Create(fopAc_ac_c* i_this) { + if (!fopAcM_CheckCondition(i_this, 8)) { + new (i_this) disappear_class(); + fopAcM_OnCondition(i_this, 8); + } + disappear_class* this_ = (disappear_class*)i_this; + + this_->field_0x567 = fopAcM_GetParam(this_); + + f32 particle_scale = (fopAcM_GetParam(this_) >> 0x8) & 0xFF; + if (particle_scale >= 50.0f) { + particle_scale *= 0.01f; + } else { + particle_scale *= 0.1f; + } + + u8 enemy_id = fopAcM_GetParam(this_) >> 0x10; + if (enemy_id != 0xFF) { + fopAcM_createItemFromEnemyID(enemy_id, &this_->current.pos, -1, -1, NULL, NULL, NULL, NULL); + } + + set_disappear(this_, particle_scale); + return cPhs_COMPLEATE_e; } -#pragma pop /* ############################################################################################## */ /* 804A94A4-804A94C4 -00001 0020+00 1/0 0/0 0/0 .data l_daDisappear_Method */ -SECTION_DATA static void* l_daDisappear_Method[8] = { - (void*)daDisappear_Create__FP10fopAc_ac_c, - (void*)daDisappear_Delete__FP15disappear_class, - (void*)daDisappear_Execute__FP15disappear_class, - (void*)daDisappear_IsDelete__FP15disappear_class, - (void*)daDisappear_Draw__FP15disappear_class, - (void*)NULL, - (void*)NULL, - (void*)NULL, +static actor_method_class l_daDisappear_Method = { + (process_method_func)daDisappear_Create, (process_method_func)daDisappear_Delete, + (process_method_func)daDisappear_Execute, (process_method_func)daDisappear_IsDelete, + (process_method_func)daDisappear_Draw, }; /* 804A94C4-804A94F4 -00001 0030+00 0/0 0/0 1/0 .data g_profile_DISAPPEAR */ -SECTION_DATA extern void* g_profile_DISAPPEAR[12] = { - (void*)0xFFFFFFFD, (void*)0x0007FFFD, - (void*)0x01390000, (void*)&g_fpcLf_Method, - (void*)0x00000578, (void*)NULL, - (void*)NULL, (void*)&g_fopAc_Method, - (void*)0x02D50000, (void*)&l_daDisappear_Method, - (void*)0x00044000, (void*)NULL, +extern actor_process_profile_definition g_profile_DISAPPEAR = { + -3, + 7, + -3, + PROC_DISAPPEAR, + &g_fpcLf_Method.mBase, + sizeof(disappear_class), + 0, + 0, + &g_fopAc_Method.base, + 725, + &l_daDisappear_Method, + 0x44000, + 0, + 0, }; 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 15524a71862..5c838df0381 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 @@ -1,7 +1,7 @@ -// -// Generated By: dol2asm -// Translation Unit: d_a_kytag16 -// +/** + * d_a_kytag16.cpp + * + */ #include "rel/d/a/kytag/d_a_kytag16/d_a_kytag16.h" #include "JSystem/JKernel/JKRHeap.h" @@ -101,7 +101,7 @@ static int daKytag16_Create(fopAc_ac_c* 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; @@ -173,10 +173,8 @@ static int daKytag16_Create(fopAc_ac_c* i_this) { /* ############################################################################################## */ /* 808611BC-808611DC -00001 0020+00 1/0 0/0 0/0 .data l_daKytag16_Method */ 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_Create, (process_method_func)daKytag16_Delete, + (process_method_func)daKytag16_Execute, (process_method_func)daKytag16_IsDelete, (process_method_func)daKytag16_Draw, }; diff --git a/src/d/kankyo/d_kankyo.cpp b/src/d/kankyo/d_kankyo.cpp index d6e334fe017..52266c0325a 100644 --- a/src/d/kankyo/d_kankyo.cpp +++ b/src/d/kankyo/d_kankyo.cpp @@ -2979,7 +2979,7 @@ static void dKy_Sound_init() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dKy_Sound_set(cXyz param_0, int param_1, unsigned int param_2, int param_3) { +asm void dKy_Sound_set(cXyz i_pos, int param_1, unsigned int i_actorID, int param_3) { nofralloc #include "asm/d/kankyo/d_kankyo/dKy_Sound_set__F4cXyziUii.s" }