This commit is contained in:
YunataSavior 2025-11-09 15:30:24 -08:00 committed by GitHub
parent 5c298bc401
commit 87e651dcab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 78 additions and 61 deletions

View File

@ -1777,7 +1777,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_ot"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_ph"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_pm"),
ActorRel(NonMatching, "d_a_e_po"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_po"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_pz"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_rb"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_rdb"),

View File

@ -133,10 +133,7 @@ public:
/* 0xE54 */ dCcU_AtInfo mAtInfo;
/* 0xE78 */ u32 mParticleKey6;
/* 0xE7C */ u32 mParticleKey5[2];
/* 0xE84 */ u32 mParticleKey[4];
/* 0xE94 */ u32 mParticleKey2[4];
/* 0xEA4 */ u32 mParticleKey3[2];
/* 0xEAC */ u32 mParticleKey4[2];
/* 0xE84 */ u32 mParticleKeys[12];
/* 0xEB4 */ dPa_hermiteEcallBack_c field_0xEB4;
/* 0xECC */ u8 field_0xECC;
/* 0xECD */ u8 field_0xECD[0xee0 - 0xECD]; // Padding
@ -144,32 +141,4 @@ public:
STATIC_ASSERT(sizeof(e_po_class) == 0xee0);
class daE_PO_HIO_c {
public:
/* 8074C54C */ daE_PO_HIO_c();
/* 80756DE8 */ virtual ~daE_PO_HIO_c() {}
/* 0x04 */ s8 field_0x04[4];
/* 0x08 */ f32 mBaseSize;
/* 0x0c */ f32 mSearchDist;
/* 0x10 */ f32 mAttackDist;
/* 0x14 */ f32 mMovementSpeed;
/* 0x18 */ f32 mType0AtRange;
/* 0x1c */ s16 mKanteraColor1R;
/* 0x1e */ s16 mKanteraColor1G;
/* 0x20 */ s16 mKanteraColor1B;
/* 0x22 */ s16 mKanteraColor2R;
/* 0x24 */ s16 mKanteraColor2G;
/* 0x26 */ s16 mKanteraColor2B;
/* 0x28 */ s16 mKanteraColor1A;
/* 0x2a */ s16 mReviveTime1;
/* 0x2c */ s16 mReviveTime2;
/* 0x2e */ s16 mReviveTime3;
/* 0x30 */ s16 mReviveTime4;
/* 0x32 */ s16 mFallChanceTime;
/* 0x34 */ s16 mAttackChanceTime;
/* 0x36 */ s16 field_0x36;
/* 0x38 */ f32 mModelSize;
};
#endif /* D_A_E_PO_H */

View File

@ -11,6 +11,7 @@
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_enemy.h"
#include "f_op/f_op_camera_mng.h"
#include "Z2AudioLib/Z2Instances.h"
/* ############################################################################################## */
@ -23,6 +24,34 @@ static f32 mHaba = 400.0f;
/* 80757AE0-80757AE4 00003C 0002+02 2/4 0/0 0/0 .data mRollHp */
static s16 mRollHp = 90;
class daE_PO_HIO_c {
public:
/* 8074C54C */ daE_PO_HIO_c();
/* 80756DE8 */ virtual ~daE_PO_HIO_c() {}
/* 0x04 */ s8 field_0x04[4];
/* 0x08 */ f32 mBaseSize;
/* 0x0c */ f32 mSearchDist;
/* 0x10 */ f32 mAttackDist;
/* 0x14 */ f32 mMovementSpeed;
/* 0x18 */ f32 mType0AtRange;
/* 0x1c */ s16 mKanteraColor1R;
/* 0x1e */ s16 mKanteraColor1G;
/* 0x20 */ s16 mKanteraColor1B;
/* 0x22 */ s16 mKanteraColor2R;
/* 0x24 */ s16 mKanteraColor2G;
/* 0x26 */ s16 mKanteraColor2B;
/* 0x28 */ s16 mKanteraColor1A;
/* 0x2a */ s16 mReviveTime1;
/* 0x2c */ s16 mReviveTime2;
/* 0x2e */ s16 mReviveTime3;
/* 0x30 */ s16 mReviveTime4;
/* 0x32 */ s16 mFallChanceTime;
/* 0x34 */ s16 mAttackChanceTime;
/* 0x36 */ s16 field_0x36;
/* 0x38 */ f32 mModelSize;
};
/* 8074C54C-8074C5EC 0000EC 00A0+00 1/1 0/0 0/0 .text __ct__12daE_PO_HIO_cFv */
daE_PO_HIO_c::daE_PO_HIO_c() {
field_0x04[0] = -1;
@ -807,25 +836,31 @@ static void e_po_wolfbite(e_po_class* i_this) {
/* 8074EA6C-807501B0 00260C 1744+00 2/1 0/0 0/0 .text e_po_dead__FP10e_po_class */
static void e_po_dead(e_po_class* i_this) {
static u16 particleNmaeDt[7] = {
0x868A, 0x868B, 0x868C, 0x868D, 0x868E, 0x868F, 0x8698,
dPa_RM(ID_ZF_S_POFIREA01_XZSMK),
dPa_RM(ID_ZF_S_POFIREA02_FIRE),
dPa_RM(ID_ZF_S_POFIREA03_HAHEN),
dPa_RM(ID_ZF_S_POFIREA04_SMK),
dPa_RM(ID_ZF_S_POFIREA05_FIRE),
dPa_RM(ID_ZF_S_POFIREA06_EXP),
dPa_RM(ID_ZF_S_POFIREA07_FIRE),
};
static u16 dead_eff_Dt1[4] = {
0x8690,
0x8691,
0x8692,
0x8693,
dPa_RM(ID_ZF_S_PODEATH00SMK),
dPa_RM(ID_ZF_S_PODEATH01SMK),
dPa_RM(ID_ZF_S_PODEATH02SP),
dPa_RM(ID_ZF_S_PODEATH03JET),
};
static u16 dead_eff_Dt2[2] = {
0x8694,
0x8695,
dPa_RM(ID_ZF_S_PODEATHHEAD00SMK),
dPa_RM(ID_ZF_S_PODEATHHEAD01SP),
};
static u16 dead_eff_Dt3[2] = {
0x8696,
0x8697,
dPa_RM(ID_ZF_S_PODEATHSKIRTR0200SMK),
dPa_RM(ID_ZF_S_PODEATHSKIRTR0201SP),
};
static u16 dead_eff_Dt4[2] = {
0x866D,
0x869B,
dPa_RM(ID_ZF_S_POFIREB01_FIRE),
dPa_RM(ID_ZF_S_POFIREB02_FIRE),
};
cXyz local_100;
@ -974,35 +1009,35 @@ static void e_po_dead(e_po_class* i_this) {
case 4:
J3DModel* model_p = i_this->mpMorf3->getModel();
for (i = 0; i < 4; i++) {
i_this->mParticleKey[i] =
dComIfGp_particle_set(i_this->mParticleKey[i], dead_eff_Dt1[i],
i_this->mParticleKeys[i] =
dComIfGp_particle_set(i_this->mParticleKeys[i], dead_eff_Dt1[i],
&a_this->current.pos, &a_this->shape_angle, &scale);
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey[i]);
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mParticleKeys[i]);
if (emitter != NULL) {
emitter->setGlobalRTMatrix(model_p->getAnmMtx(0x10));
}
i_this->mParticleKey2[i + 4] =
dComIfGp_particle_set(i_this->mParticleKey2[i + 4], dead_eff_Dt1[i],
i_this->mParticleKeys[i + 4] =
dComIfGp_particle_set(i_this->mParticleKeys[i + 4], dead_eff_Dt1[i],
&a_this->current.pos, &a_this->shape_angle, &scale);
emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey2[i + 4]);
emitter = dComIfGp_particle_getEmitter(i_this->mParticleKeys[i + 4]);
if (emitter != NULL) {
emitter->setGlobalRTMatrix(model_p->getAnmMtx(0x15));
}
}
for (i = 0; i < 2; i++) {
i_this->mParticleKey3[i + 8] =
dComIfGp_particle_set(i_this->mParticleKey3[i + 8], dead_eff_Dt2[i],
i_this->mParticleKeys[i + 8] =
dComIfGp_particle_set(i_this->mParticleKeys[i + 8], dead_eff_Dt2[i],
&a_this->current.pos, &a_this->shape_angle, &scale);
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey3[i + 8]);
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mParticleKeys[i + 8]);
if (emitter != NULL) {
emitter->setGlobalRTMatrix(model_p->getAnmMtx(0xA));
}
i_this->mParticleKey4[i + 10] =
dComIfGp_particle_set(i_this->mParticleKey4[i + 10], dead_eff_Dt3[i],
i_this->mParticleKeys[i + 10] =
dComIfGp_particle_set(i_this->mParticleKeys[i + 10], dead_eff_Dt3[i],
&a_this->current.pos, &a_this->shape_angle, &scale);
emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey4[i + 10]);
emitter = dComIfGp_particle_getEmitter(i_this->mParticleKeys[i + 10]);
if (emitter != NULL) {
emitter->setGlobalRTMatrix(model_p->getAnmMtx(0x7));
}
@ -1227,10 +1262,21 @@ static void e_po_dead(e_po_class* i_this) {
i_this->mType += 1;
case 51:
if (dComIfGp_event_runCheck()) {
#if VERSION != VERSION_SHIELD_DEBUG
// TODO: gameInfo fake match to force reuse of pointer
dComIfG_play_c* play = &g_dComIfG_gameInfo.play;
if (play->getEvent().runCheck())
#else
if (dComIfGp_event_runCheck())
#endif
{
if (a_this->eventInfo.checkCommandDemoAccrpt()) {
if (dComIfGp_getEventManager().endCheck(i_this->field_0x762) != 0) {
#if VERSION != VERSION_SHIELD_DEBUG
play->getEvent().reset();
#else
dComIfGp_event_reset();
#endif
} else {
if (strcmp(dComIfGp_getEventManager().getRunEventName(), "DEFAULT_GETITEM") ==
0 &&
@ -1694,8 +1740,8 @@ static void e_po_roll_move(e_po_class* i_this) {
/* 80751408-807549C0 004FA8 35B8+00 1/1 0/0 0/0 .text e_po_holl_demo__FP10e_po_class */
static void e_po_holl_demo(e_po_class* i_this) {
static u16 holl_demo_eff_Dt[2] = {
0x8670,
0x8671,
dPa_RM(ID_ZF_S_POFIRED00_GLOW),
dPa_RM(ID_ZF_S_POFIRED01_FIRE),
};
static s16 mKAngInit_dt[4] = {
0x0000,
@ -2759,8 +2805,8 @@ static int daE_PO_Execute(e_po_class* i_this) {
if (i_this->field_0x758 == 0 && (i_this->mActionID == ACT_ATTACK || i_this->field_0x756 != 0)) {
cXyz scale(1.0f, 1.0f, 1.0f);
i_this->mParticleKey6 = dComIfGp_particle_set(
i_this->mParticleKey6, 0x86AC, &i_this->field_0x794, &i_this->field_0x764, &scale);
i_this->mParticleKey6 = dComIfGp_particle_set(i_this->mParticleKey6, dPa_RM(ID_ZF_S_POKANFIRE00),
&i_this->field_0x794, &i_this->field_0x764, &scale);
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(i_this->mParticleKey6);
if (emitter != NULL) {
i_this->field_0xEB4.setup(emitter, &i_this->field_0x794, &i_this->field_0x764,
@ -3193,3 +3239,5 @@ extern actor_process_profile_definition g_profile_E_PO = {
fopAc_ENEMY_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
AUDIO_INSTANCES;