From 82b429b72f53fc0faa7ada5f84e76ff5169d129b Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Sat, 30 Dec 2023 00:50:19 -0500 Subject: [PATCH] start adding particle/hitmark enums + some d_cc_s --- include/d/d_cc_d.h | 41 +++++++++++++++++------------- include/d/d_kankyo.h | 1 + include/d/d_particle.h | 1 + include/d/d_particle_name.h | 14 ++++++++++ src/c/c_damagereaction.cpp | 8 +++--- src/d/actor/d_a_am.cpp | 10 ++++---- src/d/actor/d_a_am2.cpp | 12 ++++----- src/d/actor/d_a_arrow.cpp | 4 +-- src/d/actor/d_a_arrow_iceeff.cpp | 12 ++++----- src/d/actor/d_a_arrow_lighteff.cpp | 10 ++++---- src/d/actor/d_a_bomb2.cpp | 12 ++++----- src/d/actor/d_a_bomb3.inc | 22 ++++++++-------- src/d/actor/d_a_disappear.cpp | 12 ++++----- src/d/actor/d_a_obj_toripost.cpp | 2 +- src/d/actor/d_a_player_main.cpp | 6 ++--- src/d/actor/d_a_rd.cpp | 6 ++--- src/d/d_cc_d.cpp | 4 +-- src/d/d_cc_s.cpp | 37 +++++++++++++++++++++++++-- 18 files changed, 135 insertions(+), 79 deletions(-) diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h index 10e96fb28..59526b9dd 100644 --- a/include/d/d_cc_d.h +++ b/include/d/d_cc_d.h @@ -8,6 +8,7 @@ #include "SSystem/SComponent/c_cc_d.h" #include "f_pc/f_pc_manager.h" +#include "d/d_particle_name.h" enum dCcG_At_SPrm { G_AT_SPRM_NO_CON_HIT = 0x01, @@ -30,9 +31,13 @@ enum dCcG_Co_SPrm { enum dCcD_hitSe {}; +enum CcG_At_HitMark { + /* 0xD */ G_AT_MARK_NORMAL_HIT = dPa_name::ID_COMMON_NORMAL_HIT, + /* 0xF */ G_AT_MARK_BIG_HIT = dPa_name::ID_COMMON_BIG_HIT, +}; + enum CcG_Tg_HitMark { - CcG_Tg_UNK_MARK_6 = 6, - CcG_Tg_UNK_MARK_8 = 8, + /* 0xC */ G_TG_MARK_PURPLE_HIT = dPa_name::ID_COMMON_PURPLE_HIT, }; enum dCcG_At_Spl {}; @@ -106,7 +111,7 @@ public: unsigned int GetAtOldApid() { return mAtOldApid; } unsigned int GetTgOldApid() { return mTgOldApid; } bool ChkNoActor() { return field_0x1C & 1; } - bool ChkNoneActorPerfTblId() { return field_0x08 == 0xFFFF; } + bool ChkNoneActorPerfTblId() { return mActorPerfTblId == 0xFFFF; } dCcG_At_Spl GetAtSpl() { return (dCcG_At_Spl)mAtSpl; } void SetAtSpl(dCcG_At_Spl spl) { mAtSpl = spl; } dCcG_Tg_Spl GetTgSpl() { return (dCcG_Tg_Spl)mTgSpl; } @@ -117,7 +122,7 @@ public: /* 0x04 */ u8 mAtSpl; /* 0x05 */ u8 mTgSpl; /* 0x06 */ u8 mRoomId; - /* 0x08 */ u16 field_0x08; + /* 0x08 */ u16 mActorPerfTblId; /* 0x0C */ int mAtApid; /* 0x10 */ int mAtOldApid; /* 0x14 */ int mTgApid; @@ -217,7 +222,7 @@ public: void SetHitMark(u8 mark) { mHitMark = mark; } void SetSe(u8 se) { mSe = se; } void SetMtrl(u8 mtrl) { mMtrl = mtrl; } - void SetAtSpl(dCcG_At_Spl spl) { mSpl = spl; } + void SetSpl(dCcG_At_Spl spl) { mSpl = spl; } u8 GetSe() { return mSe; } u8 GetSpl() { return mSpl; } u8 GetMtrl() { return mMtrl; } @@ -251,6 +256,7 @@ public: void SetHitMark(CcG_Tg_HitMark mark) { mHitMark = mark; } s16* GetShieldFrontRangeYAngle() { return mShieldFrontRangeYAngle; } u8 GetSpl() { return mSpl; } + void SetSpl(dCcG_Tg_Spl spl) { mSpl = spl; } u8 GetHitMark() { return mHitMark; } void SetRVec(cXyz& vec) { mRVec = vec; } cXyz* GetVecP() { return &mVec; } @@ -313,14 +319,21 @@ public: void SetAtVec(cXyz& vec) { mGObjAt.SetVec(vec); } void SetTgVec(cXyz& vec) { mGObjTg.SetVec(vec); } bool ChkAtNoMass() { return mGObjAt.ChkSPrm(G_AT_SPRM_NO_MASS); } + bool ChkAtNoHitMark() { return mGObjAt.ChkSPrm(G_AT_SPRM_NO_HIT_MARK); } void OnAtNoHitMark() { mGObjAt.OnSPrm(G_AT_SPRM_NO_HIT_MARK); } void OffAtNoHitMark() { mGObjAt.OffSPrm(G_AT_SPRM_NO_HIT_MARK); } + bool ChkTgNoHitMark() { return mGObjTg.ChkSPrm(G_TG_SPRM_NO_HIT_MARK); } void OnTgNoHitMark() { mGObjTg.OnSPrm(G_TG_SPRM_NO_HIT_MARK); } void OffTgNoHitMark() { mGObjTg.OffSPrm(G_TG_SPRM_NO_HIT_MARK); } + bool ChkAtNoConHit() { return mGObjAt.ChkSPrm(G_AT_SPRM_NO_CON_HIT); } void OnAtNoConHit() { mGObjAt.OnSPrm(G_AT_SPRM_NO_CON_HIT); } void OffAtNoConHit() { mGObjAt.OffSPrm(G_AT_SPRM_NO_CON_HIT); } + bool ChkTgNoConHit() { return mGObjTg.ChkSPrm(G_TG_SPRM_NO_CON_HIT); } void OnTgNoConHit() { mGObjTg.OnSPrm(G_TG_SPRM_NO_CON_HIT); } + int GetAtHitMark() { return mGObjAt.GetHitMark(); } + int GetTgHitMark() { return mGObjTg.GetHitMark(); } void SetAtHitMark(u8 mark) { mGObjAt.SetHitMark(mark); } + void SetTgHitMark(CcG_Tg_HitMark mark) { mGObjTg.SetHitMark(mark); } void SetAtSe(u8 se) { mGObjAt.SetSe(se); } void SetTgSe(u8 se) { mGObjTg.SetSe(se); } void SetAtMtrl(u8 mtrl) { mGObjAt.SetMtrl(mtrl); } @@ -329,27 +342,26 @@ public: cXyz* GetAtVecP() { return mGObjAt.GetVecP(); } cXyz* GetTgVecP() { return mGObjTg.GetVecP(); } cXyz* GetTgRVecP() { return mGObjTg.GetRVecP(); } - void SetAtSpl(dCcG_At_Spl spl) { mGObjAt.SetAtSpl(spl); } + dCcG_At_Spl GetAtSpl() { return (dCcG_At_Spl)mGObjAt.GetSpl(); } + void SetAtSpl(dCcG_At_Spl spl) { mGObjAt.SetSpl(spl); } + dCcG_Tg_Spl GetTgSpl() { return (dCcG_Tg_Spl)mGObjTg.GetSpl(); } + void SetTgSpl(dCcG_Tg_Spl spl) { mGObjTg.SetSpl(spl); } void SetAtHitCallback(dCcD_HitCallback callback) { mGObjAt.SetHitCallback(callback); } void SetTgHitCallback(dCcD_HitCallback callback) { mGObjTg.SetHitCallback(callback); } void SetCoHitCallback(dCcD_HitCallback callback) { mGObjCo.SetHitCallback(callback); } u8 GetAtSe() { return mGObjAt.GetSe(); } - dCcG_At_Spl GetAtSpl() { return (dCcG_At_Spl)mGObjAt.GetSpl(); } u8 GetAtMtrl() { return mGObjAt.GetMtrl(); } u8 GetTgMtrl() { return mGObjTg.GetMtrl(); } fopAc_ac_c* GetTgHitAc() { return mGObjTg.GetAc(); } void SetTgShieldFrontRangeYAngle(s16* angle) { mGObjTg.SetShieldFrontRangeYAngle(angle); } - void SetTgHitMark(CcG_Tg_HitMark mark) { mGObjTg.SetHitMark(mark); } + bool ChkTgShield() { return mGObjTg.ChkSPrm(G_TG_SPRM_SHIELD); } void OnTgShield() { mGObjTg.OnSPrm(G_TG_SPRM_SHIELD); } void OffTgShield() { mGObjTg.OffSPrm(G_TG_SPRM_SHIELD); } + bool ChkTgShieldFrontRange() { return mGObjTg.ChkSPrm(G_TG_SPRM_SHIELD_FRONT_RANGE); } void OnTgShieldFrontRange() { mGObjTg.OnSPrm(G_TG_SPRM_SHIELD_FRONT_RANGE); } void OffTgShieldFrontRange() { mGObjTg.OffSPrm(G_TG_SPRM_SHIELD_FRONT_RANGE); } s16* GetTgShieldFrontRangeYAngle() { return mGObjTg.GetShieldFrontRangeYAngle(); } - bool ChkTgShield() { return mGObjTg.ChkSPrm(G_TG_SPRM_SHIELD); } - bool ChkTgShieldFrontRange() { return mGObjTg.ChkSPrm(G_TG_SPRM_SHIELD_FRONT_RANGE); } - bool ChkAtNoConHit() { return mGObjAt.ChkSPrm(G_AT_SPRM_NO_CON_HIT); } bool ChkAtStopNoConHit() { return mGObjAt.ChkSPrm(G_AT_SPRM_STOP_NO_CON_HIT); } - bool ChkTgNoConHit() { return mGObjTg.ChkSPrm(G_TG_SPRM_NO_CON_HIT); } bool ChkCoAtLasso() { return mGObjCo.ChkSPrm(G_CO_SPRM_AT_LASSO); } bool ChkCoTgLasso() { return mGObjCo.ChkSPrm(G_CO_SPRM_TG_LASSO); } dCcD_HitCallback GetCoHitCallback() { return mGObjCo.GetHitCallback(); } @@ -367,11 +379,6 @@ public: bool ChkCoHitNoActor() { return mGObjCo.ChkRPrm(1); } bool ChkAtHitNoActor() { return mGObjAt.ChkRPrm(2); } bool ChkTgHitNoActor() { return mGObjTg.ChkRPrm(1); } - bool ChkAtNoHitMark() { return mGObjAt.ChkSPrm(G_AT_SPRM_NO_HIT_MARK); } - bool ChkTgNoHitMark() { return mGObjTg.ChkSPrm(G_TG_SPRM_NO_HIT_MARK); } - dCcG_Tg_Spl GetTgSpl() { return (dCcG_Tg_Spl)mGObjTg.GetSpl(); } - int GetTgHitMark() { return mGObjTg.GetHitMark(); } - int GetAtHitMark() { return mGObjAt.GetHitMark(); } bool ChkAtEffCounter() { return mGObjAt.ChkEffCounter(); } bool ChkTgEffCounter() { return mGObjTg.ChkEffCounter(); } void ClrAtEffCounter() { mGObjAt.ClrEffCounter(); } diff --git a/include/d/d_kankyo.h b/include/d/d_kankyo.h index d6e83e4f2..c647c8e7f 100644 --- a/include/d/d_kankyo.h +++ b/include/d/d_kankyo.h @@ -393,6 +393,7 @@ void dKy_instant_timechg(f32); void dKy_instant_rainchg(); SND_INFLUENCE * dKy_Sound_get(); void dKy_Sound_set(cXyz i_pos, int param_1, unsigned int i_actorID, int param_3); +void dKy_SordFlush_set(cXyz hitPos, int lightType); void dKy_itudemo_se(); void dKy_actor_addcol_set(s16, s16, s16, f32); void dKy_actor_addcol_amb_set(s16, s16, s16, f32); diff --git a/include/d/d_particle.h b/include/d/d_particle.h index 1a6da94ae..a71ced838 100644 --- a/include/d/d_particle.h +++ b/include/d/d_particle.h @@ -6,6 +6,7 @@ #include "JSystem/JGeometry.h" #include "JSystem/JParticle/JPAParticle.h" #include "JSystem/JParticle/JPAEmitter.h" +#include "d/d_particle_name.h" #include "f_pc/f_pc_node.h" #include "m_Do/m_Do_ext.h" diff --git a/include/d/d_particle_name.h b/include/d/d_particle_name.h index 0f55e5964..8d61ac4cb 100644 --- a/include/d/d_particle_name.h +++ b/include/d/d_particle_name.h @@ -4,6 +4,20 @@ #include "dolphin/types.h" namespace dPa_name { + enum { + ID_COMMON_SMOKE_DEBRIS = 0x2008, + ID_COMMON_SMOKE_CLOUD = 0x2009, + ID_COMMON_SMOKE_CIRCLE = 0x200A, + ID_COMMON_LIGHT_FLASH = 0xB, + ID_COMMON_PURPLE_HIT = 0xC, + ID_COMMON_NORMAL_HIT = 0xD, + ID_COMMON_BIG_HIT = 0xF, + ID_COMMON_FUSE_SPARKS = 0x11, + ID_COMMON_LIGHT_EXPLOSION = 0x272, + ID_COMMON_STARS_SPIN = 0x27A, + ID_COMMON_STARS_BLOW = 0x27B, + }; + enum { ID_SCENE_END = 0x8466, }; diff --git a/src/c/c_damagereaction.cpp b/src/c/c_damagereaction.cpp index b660e3b01..fecdba0a0 100644 --- a/src/c/c_damagereaction.cpp +++ b/src/c/c_damagereaction.cpp @@ -88,7 +88,7 @@ dCcD_SrcCyl cc_cyl_src = { /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, /* SrcGObjTg Se */ 0x05, - /* SrcGObjTg HitMark */ 0x0C, + /* SrcGObjTg HitMark */ G_TG_MARK_PURPLE_HIT, /* SrcGObjTg Spl */ 0, /* SrcGObjTg Mtrl */ 0, /* SrcGObjTg SPrm */ G_TG_SPRM_SHIELD | G_TG_SPRM_NO_CON_HIT, @@ -119,7 +119,7 @@ BOOL enemy_ice(enemyice* ei) { if (ei->mLightShrinkTimer == 1) { // Just started dying to light arrows. ei->mLightShrinkTimer++; - dComIfGp_particle_set(0x272, &pos, NULL, &particleScale); + dComIfGp_particle_set(dPa_name::ID_COMMON_LIGHT_EXPLOSION, &pos, NULL, &particleScale); ac->mTevStr.mFogColor.b = 0xFF; ac->mTevStr.mFogColor.g = 0xFF; ac->mTevStr.mFogColor.r = 0xFF; @@ -331,7 +331,7 @@ BOOL enemy_ice(enemyice* ei) { dComIfGp_particle_set(0x10, &pos); csXyz angle(0, fopAcM_searchPlayerAngleY(ac), 0); particleScale.setall(2.0f); - dComIfGp_particle_set(0xD, &pos, &angle, &particleScale); + dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, &pos, &angle, &particleScale); dScnPly_ply_c::setPauseTimer(8); } @@ -591,7 +591,7 @@ void enemy_fire_remove(enemyfire* ef) { /* 8001D428-8001D48C .text enemy_piyo_set__FP10fopAc_ac_c */ void enemy_piyo_set(fopAc_ac_c* enemy) { // Creates the rotating stars particle for when an enemy is stunned. - dComIfGp_particle_set(0x27A, &enemy->mAttentionInfo.mPosition); + dComIfGp_particle_set(dPa_name::ID_COMMON_STARS_SPIN, &enemy->mAttentionInfo.mPosition); } /* 8001D48C-8001D890 .text wall_angle_get__FP10fopAc_ac_cs */ diff --git a/src/d/actor/d_a_am.cpp b/src/d/actor/d_a_am.cpp index cb4673b85..c84cf490b 100644 --- a/src/d/actor/d_a_am.cpp +++ b/src/d/actor/d_a_am.cpp @@ -268,9 +268,9 @@ static BOOL medama_atari_check(am_class* i_this) { cc_at_check(i_this, &atInfo); i_this->mMaxHealth = 10; i_this->mHealth = 10; - dComIfGp_particle_set(0x27B, &i_this->mAttentionInfo.mPosition); + dComIfGp_particle_set(dPa_name::ID_COMMON_STARS_BLOW, &i_this->mAttentionInfo.mPosition); } else { - dComIfGp_particle_set(0xC, &hitPos); + dComIfGp_particle_set(dPa_name::ID_COMMON_PURPLE_HIT, &hitPos); } fopAcM_seStart(i_this, JA_SE_LK_MS_WEP_HIT, 0x42); } @@ -319,7 +319,7 @@ static BOOL medama_atari_check(am_class* i_this) { } break; default: - dComIfGp_particle_set(0xC, &hitPos); + dComIfGp_particle_set(dPa_name::ID_COMMON_PURPLE_HIT, &hitPos); fopAcM_seStart(i_this, JA_SE_LK_MS_WEP_HIT, 0x42); break; } @@ -1330,7 +1330,7 @@ static s32 daAM_Create(fopAc_ac_c* i_actor) { /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, /* SrcGObjTg Se */ 0, - /* SrcGObjTg HitMark */ 0x0C, + /* SrcGObjTg HitMark */ G_TG_MARK_PURPLE_HIT, /* SrcGObjTg Spl */ 0, /* SrcGObjTg Mtrl */ 0, /* SrcGObjTg SPrm */ G_TG_SPRM_SHIELD | G_TG_SPRM_NO_CON_HIT, @@ -1362,7 +1362,7 @@ static s32 daAM_Create(fopAc_ac_c* i_actor) { /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, /* SrcGObjTg Se */ 0, - /* SrcGObjTg HitMark */ 0x0C, + /* SrcGObjTg HitMark */ G_TG_MARK_PURPLE_HIT, /* SrcGObjTg Spl */ 0, /* SrcGObjTg Mtrl */ 0, /* SrcGObjTg SPrm */ G_TG_SPRM_SHIELD | G_TG_SPRM_NO_CON_HIT, diff --git a/src/d/actor/d_a_am2.cpp b/src/d/actor/d_a_am2.cpp index 734eb68cb..94255f731 100644 --- a/src/d/actor/d_a_am2.cpp +++ b/src/d/actor/d_a_am2.cpp @@ -175,9 +175,9 @@ static BOOL medama_atari_check(am2_class* i_this) { atInfo.pParticlePos = NULL; cc_at_check(i_this, &atInfo); i_this->mHealth = origHealth; - dComIfGp_particle_set(0x27B, &i_this->mAttentionInfo.mPosition); + dComIfGp_particle_set(dPa_name::ID_COMMON_STARS_BLOW, &i_this->mAttentionInfo.mPosition); } else { - dComIfGp_particle_set(0xC, &hitPos); + dComIfGp_particle_set(dPa_name::ID_COMMON_PURPLE_HIT, &hitPos); } fopAcM_seStart(i_this, JA_SE_LK_MS_WEP_HIT, 0x42); } @@ -315,9 +315,9 @@ static BOOL week_atari_check(am2_class* i_this) { if (hitType == 1) { dComIfGp_particle_set(0x10, &hitPos); cXyz particleScale(2.0f, 2.0f, 2.0f); - dComIfGp_particle_set(0xF, &hitPos, &player->shape_angle, &particleScale); + dComIfGp_particle_set(dPa_name::ID_COMMON_BIG_HIT, &hitPos, &player->shape_angle, &particleScale); } else { - dComIfGp_particle_set(0xD, &hitPos, &player->shape_angle); + dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, &hitPos, &player->shape_angle); } i_this->mAction = ACTION_ITAI; @@ -1441,7 +1441,7 @@ static s32 daAM2_Create(fopAc_ac_c* i_actor) { /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, /* SrcGObjTg Se */ 0, - /* SrcGObjTg HitMark */ 0x0C, + /* SrcGObjTg HitMark */ G_TG_MARK_PURPLE_HIT, /* SrcGObjTg Spl */ 0, /* SrcGObjTg Mtrl */ 0, /* SrcGObjTg SPrm */ G_TG_SPRM_SHIELD | G_TG_SPRM_NO_CON_HIT, @@ -1473,7 +1473,7 @@ static s32 daAM2_Create(fopAc_ac_c* i_actor) { /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, /* SrcGObjTg Se */ 0, - /* SrcGObjTg HitMark */ 0x0C, + /* SrcGObjTg HitMark */ G_TG_MARK_PURPLE_HIT, /* SrcGObjTg Spl */ 0, /* SrcGObjTg Mtrl */ 0, /* SrcGObjTg SPrm */ G_TG_SPRM_SHIELD | G_TG_SPRM_NO_CON_HIT, diff --git a/src/d/actor/d_a_arrow.cpp b/src/d/actor/d_a_arrow.cpp index f9dd046ff..377f21053 100644 --- a/src/d/actor/d_a_arrow.cpp +++ b/src/d/actor/d_a_arrow.cpp @@ -34,7 +34,7 @@ const dCcD_SrcCps daArrow_c::m_at_cps_src = { /* SrcObjTg SPrm */ 0, /* SrcObjCo SPrm */ 0, /* SrcGObjAt Se */ 0x07, - /* SrcGObjAt HitMark */ 0x0D, + /* SrcGObjAt HitMark */ G_AT_MARK_NORMAL_HIT, /* SrcGObjAt Spl */ 0, /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, @@ -836,7 +836,7 @@ BOOL daArrow_c::procMove() { csXyz temp9; cM3d_CalcVecZAngle(triPla->mNormal, &temp9); - dComIfGp_particle_setP1(0xC, &field_0x6a8, &temp9); + dComIfGp_particle_setP1(dPa_name::ID_COMMON_PURPLE_HIT, &field_0x6a8, &temp9); fopAcM_seStartCurrent(this, JA_SE_LK_ARROW_REBOUND, mtrlSndId); } else { fopAcM_seStartCurrent(this, JA_SE_LK_ARROW_HIT, mtrlSndId); diff --git a/src/d/actor/d_a_arrow_iceeff.cpp b/src/d/actor/d_a_arrow_iceeff.cpp index 4c902631e..a6165102c 100644 --- a/src/d/actor/d_a_arrow_iceeff.cpp +++ b/src/d/actor/d_a_arrow_iceeff.cpp @@ -196,7 +196,7 @@ bool daArrow_Iceeff_c::_execute() { daArrow_c* arrow = static_cast(fopAcM_SearchByID(mParentPcId)); if(field_0xA38 == 0) { if(arrow == 0) { - dComIfGp_particle_setP1(0x55, ¤t.pos, ¤t.angle, 0); + dComIfGp_particle_setP1(0x55, ¤t.pos, ¤t.angle); fopAcM_delete(this); return true; @@ -219,7 +219,7 @@ bool daArrow_Iceeff_c::_execute() { field_0xA30++; } else { - dComIfGp_particle_setP1(0x55, ¤t.pos, ¤t.angle, 0); + dComIfGp_particle_setP1(0x55, ¤t.pos, ¤t.angle); fopAcM_seStartCurrent(this, JA_SE_OBJ_MINI_ICE_BREAK, 0); fopAcM_delete(arrow); fopAcM_delete(this); @@ -234,7 +234,7 @@ bool daArrow_Iceeff_c::_execute() { csXyz angle; angle.set(-0x4000, 0, 0); - JPABaseEmitter* ptcl = dComIfGp_particle_setP1(0x29E, ¤t.pos, &angle, 0); + JPABaseEmitter* ptcl = dComIfGp_particle_setP1(0x29E, ¤t.pos, &angle); if(ptcl) { JGeometry::TVec3 scale(0.5f, 0.5f, 0.5f); ptcl->setGlobalScale(scale); @@ -258,14 +258,14 @@ bool daArrow_Iceeff_c::_execute() { } if(field_0xA30 == 0x23) { - JPABaseEmitter* ptcl = dComIfGp_particle_setSingleRipple(0x3D, ¤t.pos, 0, &ripple_scale); + JPABaseEmitter* ptcl = dComIfGp_particle_setSingleRipple(0x3D, ¤t.pos, NULL, &ripple_scale); if(ptcl) { JGeometry::TVec3 scale(0.67f, 0.67f, 1.0f); ptcl->setGlobalParticleScale(scale); } } else if(field_0xA30 == 0x28) { - JPABaseEmitter* ptcl = dComIfGp_particle_setP1(0x55, ¤t.pos, 0, 0); + JPABaseEmitter* ptcl = dComIfGp_particle_setP1(0x55, ¤t.pos); if(ptcl) { ptcl->setAwayFromCenterSpeed(25.0f); ptcl->setAwayFromAxisSpeed(5.0f); @@ -276,7 +276,7 @@ bool daArrow_Iceeff_c::_execute() { ptcl->setGlobalParticleScale(scale2); } - dComIfGp_particle_setSingleRipple(0x3F, ¤t.pos, 0, &ripple_scale); + dComIfGp_particle_setSingleRipple(0x3F, ¤t.pos, NULL, &ripple_scale); fopAcM_seStartCurrent(this, JA_SE_OBJ_MINI_ICE_BREAK, 0); field_0xA3C = 0; diff --git a/src/d/actor/d_a_arrow_lighteff.cpp b/src/d/actor/d_a_arrow_lighteff.cpp index ae3d6e48e..932810da0 100644 --- a/src/d/actor/d_a_arrow_lighteff.cpp +++ b/src/d/actor/d_a_arrow_lighteff.cpp @@ -145,23 +145,23 @@ void daArrow_Lighteff_c::CreateInit() { if(field_0x2E8 == 1) { if(field_0x2F4.getEmitter() == 0) { - dComIfGp_particle_setP1(0x299, &field_0x29C, ¤t.angle, 0, 0xFF, &field_0x2F4); + dComIfGp_particle_setP1(0x299, &field_0x29C, ¤t.angle, NULL, 0xFF, &field_0x2F4); } } else if(field_0x2E8 == 2) { if(field_0x2F4.getEmitter() == 0) { - dComIfGp_particle_setP1(0x29C, &field_0x29C, ¤t.angle, 0, 0xFF, &field_0x2F4); + dComIfGp_particle_setP1(0x29C, &field_0x29C, ¤t.angle, NULL, 0xFF, &field_0x2F4); } if(field_0x308.getEmitter() == 0) { - dComIfGp_particle_setP1(0x29D, &field_0x29C, ¤t.angle, 0, 0xFF, &field_0x308); + dComIfGp_particle_setP1(0x29D, &field_0x29C, ¤t.angle, NULL, 0xFF, &field_0x308); } } else if(field_0x2E8 == 3) { if(field_0x2F4.getEmitter() == 0) { - dComIfGp_particle_setP1(0x29F, &field_0x29C, ¤t.angle, 0, 0xFF, &field_0x2F4); + dComIfGp_particle_setP1(0x29F, &field_0x29C, ¤t.angle, NULL, 0xFF, &field_0x2F4); } if(field_0x308.getEmitter() == 0) { - dComIfGp_particle_setP1(0x2A0, &field_0x29C, ¤t.angle, 0, 0xFF, &field_0x308); + dComIfGp_particle_setP1(0x2A0, &field_0x29C, ¤t.angle, NULL, 0xFF, &field_0x308); } } diff --git a/src/d/actor/d_a_bomb2.cpp b/src/d/actor/d_a_bomb2.cpp index a2b3a2b9c..4c6f788d2 100644 --- a/src/d/actor/d_a_bomb2.cpp +++ b/src/d/actor/d_a_bomb2.cpp @@ -701,10 +701,10 @@ namespace daBomb2 { } void Act_c::eff_explode_normal(const csXyz* rotation) { - dComIfGp_particle_setP1(0xB, ¤t.pos, rotation, &mScale, 0xFF, 0, -1, 0, 0, 0); - dComIfGp_particle_setBombSmoke(0x2009, ¤t.pos, 0, &mScale, 0xFF); - dComIfGp_particle_setBombSmoke(0x200A, ¤t.pos, 0, &mScale, 0xFF); - dComIfGp_particle_setToonP1(0x2008, ¤t.pos, 0, &mScale, 0xFF, 0, -1, 0, 0, 0); + dComIfGp_particle_setP1(dPa_name::ID_COMMON_LIGHT_FLASH, ¤t.pos, rotation, &mScale); + dComIfGp_particle_setBombSmoke(dPa_name::ID_COMMON_SMOKE_CLOUD, ¤t.pos, NULL, &mScale); + dComIfGp_particle_setBombSmoke(dPa_name::ID_COMMON_SMOKE_CIRCLE, ¤t.pos, NULL, &mScale); + dComIfGp_particle_setToonP1(dPa_name::ID_COMMON_SMOKE_DEBRIS, ¤t.pos, NULL, &mScale); } void Act_c::eff_explode_water() { @@ -733,8 +733,8 @@ namespace daBomb2 { field_0x6CC = field_0x6C0; field_0x6D8 = field_0x6C0; - dComIfGp_particle_setP1(0x11, &field_0x6C0, 0, &mScale, 0xFF, &mSparks, -1, 0, 0, 0); - dComIfGp_particle_setToonP1(0x2012, &field_0x6C0, 0, &mScale, 0xDC, &mSmoke, -1, 0, 0, 0); + dComIfGp_particle_setP1(dPa_name::ID_COMMON_FUSE_SPARKS, &field_0x6C0, NULL, &mScale, 0xFF, &mSparks); + dComIfGp_particle_setToonP1(0x2012, &field_0x6C0, NULL, &mScale, 0xDC, &mSmoke); mSmoke.setOldPosP(&field_0x6CC, &field_0x6D8); } } diff --git a/src/d/actor/d_a_bomb3.inc b/src/d/actor/d_a_bomb3.inc index 3fcd98408..8d77c6c89 100644 --- a/src/d/actor/d_a_bomb3.inc +++ b/src/d/actor/d_a_bomb3.inc @@ -637,7 +637,7 @@ void daBomb_c::makeFireEffect(cXyz& pos, csXyz& rotation) { rotation.x = rotation.x + 0x4000; rotation.z = rotation.z; - dComIfGp_particle_setBombSmoke(0x200A, &pos, &rotation, &scale); + dComIfGp_particle_setBombSmoke(dPa_name::ID_COMMON_SMOKE_CIRCLE, &pos, &rotation, &scale); dComIfGp_getVibration().StartShock(7, -0x21, cXyz(0.0f, 1.0f, 0.0f)); } @@ -673,8 +673,8 @@ void daBomb_c::setFuseEffect() { mFusePos2 = mFusePos; mFusePos3 = mFusePos; - dComIfGp_particle_setP1(0x11, &mFusePos, 0, &mScale, 0xFF, &mSparks, -1, 0, 0, 0); - dComIfGp_particle_setToonP1(0x2012, &mFusePos, 0, &mScale, 0xDC, &mSmoke, -1, 0, 0, 0); + dComIfGp_particle_setP1(dPa_name::ID_COMMON_FUSE_SPARKS, &mFusePos, NULL, &mScale, 0xFF, &mSparks); + dComIfGp_particle_setToonP1(0x2012, &mFusePos, NULL, &mScale, 0xDC, &mSmoke); mSmoke.field_0x0C = &mFusePos2; mSmoke.field_0x10 = &mFusePos3; mSmoke.field_0x04 = 0x14; @@ -682,27 +682,27 @@ void daBomb_c::setFuseEffect() { } void daBomb_c::eff_explode_normal(const csXyz* rotation) { - dComIfGp_particle_setP1(0xB, ¤t.pos, rotation, &mScale, 0xFF, 0, -1, 0, 0, 0); - dComIfGp_particle_setBombSmoke(0x2009, ¤t.pos, 0, &mScale); - dComIfGp_particle_setBombSmoke(0x200A, ¤t.pos, 0, &mScale); - dComIfGp_particle_setToonP1(0x2008, ¤t.pos, 0, &mScale, 0xFF, 0, -1, 0, 0, 0); + dComIfGp_particle_setP1(dPa_name::ID_COMMON_LIGHT_FLASH, ¤t.pos, rotation, &mScale); + dComIfGp_particle_setBombSmoke(dPa_name::ID_COMMON_SMOKE_CLOUD, ¤t.pos, NULL, &mScale); + dComIfGp_particle_setBombSmoke(dPa_name::ID_COMMON_SMOKE_CIRCLE, ¤t.pos, NULL, &mScale); + dComIfGp_particle_setToonP1(dPa_name::ID_COMMON_SMOKE_DEBRIS, ¤t.pos, NULL, &mScale); } void daBomb_c::eff_explode_cheap(const csXyz* rotation) { - JPABaseEmitter* emitter = dComIfGp_particle_setP1(0xB, ¤t.pos, rotation, &mScale, 0xFF, 0, -1, 0, 0, 0); + JPABaseEmitter* emitter = dComIfGp_particle_setP1(dPa_name::ID_COMMON_LIGHT_FLASH, ¤t.pos, rotation, &mScale); if(emitter) { emitter->mLifeTime = 0xC; JGeometry::TVec3 vec(0.5f, 0.67f, 1.0f); emitter->setGlobalParticleScale(vec); } - dComIfGp_particle_setBombSmoke(0x232A, ¤t.pos, 0, &mScale); - emitter = dComIfGp_particle_setBombSmoke(0x200A, ¤t.pos, 0, &mScale); + dComIfGp_particle_setBombSmoke(0x232A, ¤t.pos, NULL, &mScale); + emitter = dComIfGp_particle_setBombSmoke(dPa_name::ID_COMMON_SMOKE_CIRCLE, ¤t.pos, NULL, &mScale); if(emitter) { emitter->mLifeTime = 0x46; } - emitter = dComIfGp_particle_setToonP1(0x2008, ¤t.pos, 0, &mScale, 0xFF, 0, -1, 0, 0, 0); + emitter = dComIfGp_particle_setToonP1(dPa_name::ID_COMMON_SMOKE_DEBRIS, ¤t.pos, NULL, &mScale); if(emitter) { emitter->mLifeTime = 0x46; emitter->mInitialVelAxis = 25.0f; diff --git a/src/d/actor/d_a_disappear.cpp b/src/d/actor/d_a_disappear.cpp index bf0e607ed..a058c4a83 100644 --- a/src/d/actor/d_a_disappear.cpp +++ b/src/d/actor/d_a_disappear.cpp @@ -75,15 +75,15 @@ void set_disappear(disappear_class* i_this, float scale) { case 0xB: case 0xC: case 0xD: - dComIfGp_particle_set(0x14, &i_this->current.pos, 0, &particleScale); + dComIfGp_particle_set(0x14, &i_this->current.pos, NULL, &particleScale); case 3: - dComIfGp_particle_set(0x13, &i_this->current.pos, 0, &particleScale); - dComIfGp_particle_setStripes(0x15, &i_this->current.pos, 0, &particleScale, 0xFF, 0x96); - dComIfGp_particle_set(0x16, &i_this->current.pos, 0, &particleScale); + dComIfGp_particle_set(0x13, &i_this->current.pos, NULL, &particleScale); + dComIfGp_particle_setStripes(0x15, &i_this->current.pos, NULL, &particleScale, 0xFF, 0x96); + dComIfGp_particle_set(0x16, &i_this->current.pos, NULL, &particleScale); break; case 1: - dComIfGp_particle_set(0x13, &i_this->current.pos, 0, &particleScale); - dComIfGp_particle_set(0x16, &i_this->current.pos, 0, &particleScale); + dComIfGp_particle_set(0x13, &i_this->current.pos, NULL, &particleScale); + dComIfGp_particle_set(0x16, &i_this->current.pos, NULL, &particleScale); break; case 4: dComIfGp_particle_set(0x043C, &i_this->current.pos); diff --git a/src/d/actor/d_a_obj_toripost.cpp b/src/d/actor/d_a_obj_toripost.cpp index 26d73163e..1110540e6 100644 --- a/src/d/actor/d_a_obj_toripost.cpp +++ b/src/d/actor/d_a_obj_toripost.cpp @@ -343,7 +343,7 @@ int daObjTpost_c::getMsgXY() { col.b = g_regHIO.mChild[12].mShortRegs[2] + 0x80; mDoMtx_stack_c::copy(mMorf->getModel()->mpNodeMtx[2]); mDoMtx_stack_c::multVec(&pos, &pos); - dComIfGp_particle_set(0x57, &pos, &shape_angle, &scale, 0xFF, 0, -1, &col); + dComIfGp_particle_set(0x57, &pos, &shape_angle, &scale, 0xFF, NULL, -1, &col); break; case 0x98: diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index 685011151..33dec2365 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -1870,7 +1870,7 @@ static dCcD_SrcCyl l_cyl_src = { /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, /* SrcGObjTg Se */ 0x25, - /* SrcGObjTg HitMark */ 0x0C, + /* SrcGObjTg HitMark */ G_TG_MARK_PURPLE_HIT, /* SrcGObjTg Spl */ 0, /* SrcGObjTg Mtrl */ 0, /* SrcGObjTg SPrm */ 0, @@ -1925,7 +1925,7 @@ static dCcD_SrcCyl l_at_cyl_src = { /* SrcObjTg SPrm */ 0, /* SrcObjCo SPrm */ 0, /* SrcGObjAt Se */ 0, - /* SrcGObjAt HitMark */ 0x0F, + /* SrcGObjAt HitMark */ G_AT_MARK_BIG_HIT, /* SrcGObjAt Spl */ 0x01, /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, @@ -1955,7 +1955,7 @@ static dCcD_SrcCps l_at_cps_src = { /* SrcObjTg SPrm */ 0, /* SrcObjCo SPrm */ 0, /* SrcGObjAt Se */ 0x01, - /* SrcGObjAt HitMark */ 0x0D, + /* SrcGObjAt HitMark */ G_AT_MARK_NORMAL_HIT, /* SrcGObjAt Spl */ 0, /* SrcGObjAt Mtrl */ 0, /* SrcGObjAt SPrm */ 0, diff --git a/src/d/actor/d_a_rd.cpp b/src/d/actor/d_a_rd.cpp index aab879c71..79dba38fb 100644 --- a/src/d/actor/d_a_rd.cpp +++ b/src/d/actor/d_a_rd.cpp @@ -645,7 +645,7 @@ bool daRd_c::checkTgHit() { } break; case AT_TYPE_GRAPPLING_HOOK: - dComIfGp_particle_set(0x27B, &mAttentionInfo.mPosition); + dComIfGp_particle_set(dPa_name::ID_COMMON_STARS_BLOW, &mAttentionInfo.mPosition); fopAcM_seStart(this, JA_SE_LK_W_WEP_HIT, 0x44); mHitType = 0xE; r29 = false; @@ -662,14 +662,14 @@ bool daRd_c::checkTgHit() { if (mHitType == 1 || mHitType == 7 || mHitType == 8 || mHealth <= 0) { dComIfGp_particle_set(0x10, mCyl.GetTgHitPosP()); cXyz scale(2.0f, 2.0f, 2.0f); - dComIfGp_particle_set(0xF, temp, &player->shape_angle, &scale); + dComIfGp_particle_set(dPa_name::ID_COMMON_BIG_HIT, temp, &player->shape_angle, &scale); if (mHealth <= 0) { modeProcInit(MODE_DEATH); } else { modeProcInit(MODE_DAMAGE); } } else { - dComIfGp_particle_set(0xD, temp, &player->shape_angle); + dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, temp, &player->shape_angle); modeProcInit(MODE_DAMAGE); } } else if (mHitType == 0xE) { diff --git a/src/d/d_cc_d.cpp b/src/d/d_cc_d.cpp index d77af66d2..ff3216da1 100644 --- a/src/d/d_cc_d.cpp +++ b/src/d/d_cc_d.cpp @@ -32,7 +32,7 @@ dCcD_GStts::dCcD_GStts() { mAtSpl = 0; mTgSpl = 0; mRoomId = 0; - field_0x08 = -1; + mActorPerfTblId = -1; mAtApid = -1; mAtOldApid = -1; mTgApid = -1; @@ -45,7 +45,7 @@ void dCcD_GStts::Ct() { mAtSpl = 0; mTgSpl = 0; mRoomId = 0; - field_0x08 = -1; + mActorPerfTblId = -1; mAtApid = -1; mAtOldApid = -1; mTgApid = -1; diff --git a/src/d/d_cc_s.cpp b/src/d/d_cc_s.cpp index 36ac3beaa..582b5689c 100644 --- a/src/d/d_cc_s.cpp +++ b/src/d/d_cc_s.cpp @@ -5,6 +5,7 @@ #include "d/d_cc_s.h" #include "d/d_cc_d.h" +#include "d/d_com_inf_game.h" /* 800AD5B0-800AD5E4 .text Ct__4dCcSFv */ void dCcS::Ct() { @@ -58,8 +59,40 @@ void dCcS::CalcParticleAngle(dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, csXyz*) { } /* 800ADFF8-800AE308 .text ProcAtTgHitmark__4dCcSFbbP8cCcD_ObjP8cCcD_ObjP12dCcD_GObjInfP12dCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10dCcD_GSttsP10dCcD_GSttsP4cXyz */ -void dCcS::ProcAtTgHitmark(bool, bool, cCcD_Obj*, cCcD_Obj*, dCcD_GObjInf*, dCcD_GObjInf*, cCcD_Stts*, cCcD_Stts*, dCcD_GStts*, dCcD_GStts*, cXyz*) { - /* Nonmatching */ +void dCcS::ProcAtTgHitmark(bool, bool, cCcD_Obj* r6, cCcD_Obj* r7, dCcD_GObjInf* atInf, dCcD_GObjInf* tgInf, + cCcD_Stts* r10, cCcD_Stts* r30, dCcD_GStts*, dCcD_GStts* r4, cXyz* pos) +{ + if (atInf->ChkAtNoHitMark()) { return; } + if (tgInf->ChkTgNoHitMark()) { return; } + if (tgInf->GetTgHitMark() == 0xFF) { return; } + if (!r4->ChkNoneActorPerfTblId()) { return; } + + if (!ChkShield(r6, r7, atInf, tgInf)) { + if (atInf->GetAtHitMark() == 0) { return; } + if (atInf->GetAtHitMark() == 1 && tgInf->GetTgHitMark() == 1) { + dComIfGp_particle_set(dPa_name::ID_COMMON_STARS_BLOW, pos); + } else { + csXyz angle; + CalcParticleAngle(atInf, r10, r30, &angle); + if (atInf->GetAtHitMark() == 0xF) { + dComIfGp_particle_set(0x10, pos); + cXyz scale; + scale.x = scale.y = scale.z = 2.0f; + dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, pos, &angle, &scale); + } else if (atInf->GetAtHitMark() == 1) { + dComIfGp_particle_set(dPa_name::ID_COMMON_NORMAL_HIT, pos, &angle); + } else { + dComIfGp_particle_set(atInf->GetAtHitMark(), pos, &angle); + } + dKy_SordFlush_set(*pos, 1); + } + } else { + if (tgInf->GetTgHitMark() == 0) { return; } + dKy_SordFlush_set(*pos, 0); + csXyz angle; + CalcParticleAngle(atInf, r10, r30, &angle); + dComIfGp_particle_set(tgInf->GetTgHitMark(), pos, &angle); + } } /* 800AE308-800AE5AC .text SetAtTgGObjInf__4dCcSFbbP8cCcD_ObjP8cCcD_ObjP12cCcD_GObjInfP12cCcD_GObjInfP9cCcD_SttsP9cCcD_SttsP10cCcD_GSttsP10cCcD_GSttsP4cXyz */