From 320e19bd6ffb63e073e2b755c1308fb84b6eec56 Mon Sep 17 00:00:00 2001 From: Thar0 <17233964+Thar0@users.noreply.github.com> Date: Sat, 16 Jul 2022 02:24:22 +0100 Subject: [PATCH 1/6] Decompiled, mostly named --- assets/xml/objects/object_po_composer.xml | 27 +- spec | 3 +- .../ovl_En_Po_Composer/z_en_po_composer.c | 690 ++++++++++++++++-- .../ovl_En_Po_Composer/z_en_po_composer.h | 39 +- 4 files changed, 664 insertions(+), 95 deletions(-) diff --git a/assets/xml/objects/object_po_composer.xml b/assets/xml/objects/object_po_composer.xml index c45cf9039..40d77d827 100644 --- a/assets/xml/objects/object_po_composer.xml +++ b/assets/xml/objects/object_po_composer.xml @@ -1,4 +1,5 @@  + @@ -13,23 +14,15 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + diff --git a/spec b/spec index 5f8c616e5..6b7b441cf 100644 --- a/spec +++ b/spec @@ -4263,8 +4263,7 @@ beginseg name "ovl_En_Po_Composer" compress include "build/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.o" - include "build/data/ovl_En_Po_Composer/ovl_En_Po_Composer.data.o" - include "build/data/ovl_En_Po_Composer/ovl_En_Po_Composer.reloc.o" + include "build/src/overlays/actors/ovl_En_Po_Composer/ovl_En_Po_Composer_reloc.o" endseg beginseg diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c index 0772249ba..0f88f364d 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c @@ -15,20 +15,24 @@ void EnPoComposer_Destroy(Actor* thisx, PlayState* play); void EnPoComposer_Update(Actor* thisx, PlayState* play); void EnPoComposer_Draw(Actor* thisx, PlayState* play); -void func_80BC5294(EnPoComposer* this, PlayState* play); -void func_80BC52F0(EnPoComposer* this, PlayState* play); -void func_80BC53A0(EnPoComposer* this, PlayState* play); -void func_80BC5404(EnPoComposer* this, PlayState* play); -void func_80BC5570(EnPoComposer* this, PlayState* play); -void func_80BC55E0(EnPoComposer* this, PlayState* play); -void func_80BC5670(EnPoComposer* this, PlayState* play); -void func_80BC56D0(EnPoComposer* this, PlayState* play); -void func_80BC5780(EnPoComposer* this, PlayState* play); -void func_80BC5830(EnPoComposer* this, PlayState* play); -void func_80BC58E0(EnPoComposer* this, PlayState* play); +void EnPoComposer_AwaitPlayer(EnPoComposer* this, PlayState* play); +void EnPoComposer_StartCutscene(EnPoComposer* this, PlayState* play); +void EnPoComposer_StartedCutscene(EnPoComposer* this, PlayState* play); +void EnPoComposer_PlayCurse(EnPoComposer* this, PlayState* play); +void EnPoComposer_IdleStill(EnPoComposer* this, PlayState* play); +void EnPoComposer_Appear(EnPoComposer* this, PlayState* play); +void EnPoComposer_Idle(EnPoComposer* this, PlayState* play); +void EnPoComposer_RaiseArms(EnPoComposer* this, PlayState* play); +void EnPoComposer_LowerArms(EnPoComposer* this, PlayState* play); +void EnPoComposer_CutscenePlayCurse(EnPoComposer* this, PlayState* play); +void EnPoComposer_Roll(EnPoComposer* this, PlayState* play); -#if 0 -ActorInit En_Po_Composer_InitVars = { +void EnPoComposer_SetupAwaitPlayer(EnPoComposer* this); +void EnPoComposer_SetupStartCutscene(EnPoComposer* this); +void EnPoComposer_SetupStartedCutscene(EnPoComposer* this); +void EnPoComposer_StepLightAlpha(EnPoComposer* this); + +const ActorInit En_Po_Composer_InitVars = { ACTOR_EN_PO_COMPOSER, ACTORCAT_ITEMACTION, FLAGS, @@ -40,32 +44,56 @@ ActorInit En_Po_Composer_InitVars = { (ActorFunc)EnPoComposer_Draw, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_80BC6780 = { - { COLTYPE_HIT3, AT_NONE, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, }, - { ELEMTYPE_UNK0, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, }, +static ColliderCylinderInit sCylinderInit = { + { + COLTYPE_HIT3, + AT_NONE, + AC_ON | AC_TYPE_PLAYER, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_1, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK0, + { 0x00000000, 0x00, 0x00 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_ON, + }, { 20, 40, 20, { 0, 0, 0 } }, }; -// static ColliderJntSphElementInit sJntSphElementsInit[1] = { -static ColliderJntSphElementInit D_80BC67AC[1] = { +static ColliderJntSphElementInit sJntSphElementsInit[1] = { { - { ELEMTYPE_UNK0, { 0xF7CFFFFF, 0x00, 0x08 }, { 0x00000000, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NORMAL, BUMP_NONE, OCELEM_ON, }, + { + ELEMTYPE_UNK0, + { 0xF7CFFFFF, 0x00, 0x08 }, + { 0x00000000, 0x00, 0x00 }, + TOUCH_ON | TOUCH_SFX_NORMAL, + BUMP_NONE, + OCELEM_ON, + }, { 9, { { 0, -1500, 0 }, 10 }, 100 }, }, }; -// static ColliderJntSphInit sJntSphInit = { -static ColliderJntSphInit D_80BC67D0 = { - { COLTYPE_HIT3, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_JNTSPH, }, - ARRAY_COUNT(sJntSphElementsInit), D_80BC67AC, // sJntSphElementsInit, +static ColliderJntSphInit sJntSphInit = { + { + COLTYPE_HIT3, + AT_ON | AT_TYPE_ENEMY, + AC_ON | AC_TYPE_PLAYER, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_1, + COLSHAPE_JNTSPH, + }, + ARRAY_COUNT(sJntSphElementsInit), + sJntSphElementsInit, }; -// sColChkInfoInit -static CollisionCheckInfoInit D_80BC67E0 = { 4, 25, 50, 40 }; +static CollisionCheckInfoInit sColChkInfoInit = { 4, 25, 50, 40 }; -// static DamageTable sDamageTable = { -static DamageTable D_80BC67E8 = { +static DamageTable sDamageTable = { /* Deku Nut */ DMG_ENTRY(0, 0x0), /* Deku Stick */ DMG_ENTRY(2, 0x0), /* Horse trample */ DMG_ENTRY(1, 0x0), @@ -100,88 +128,602 @@ static DamageTable D_80BC67E8 = { /* Powder Keg */ DMG_ENTRY(0, 0x0), }; -// static InitChainEntry sInitChain[] = { -static InitChainEntry D_80BC6958[] = { +typedef enum { + PO_COMPOSER_ANIM_IDLE_STILL, + PO_COMPOSER_ANIM_APPEAR_DISAPPEAR, + PO_COMPOSER_ANIM_IDLE, + PO_COMPOSER_ANIM_RAISE_ARMS, + PO_COMPOSER_ANIM_ARMS_RAISED, + PO_COMPOSER_ANIM_LOWER_ARMS, + PO_COMPOSER_ANIM_IDLE_FACING_DOWN, + PO_COMPOSER_ANIM_BEGIN_PLAYING_CURSE, + PO_COMPOSER_ANIM_PLAYING_CURSE, + PO_COMPOSER_ANIM_BEGIN_ROLLING, + PO_COMPOSER_ANIM_ROLLING, + PO_COMPOSER_ANIM_FLEE, + PO_COMPOSER_ANIM_ATTACK, + PO_COMPOSER_ANIM_MAX, +} EnPoComposerAnim; + +static AnimationInfo sAnimationInfo[PO_COMPOSER_ANIM_MAX] = { + /* 0 */ { &object_po_composer_Anim_003DB0, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 1 */ { &object_po_composer_Anim_003954, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, + /* 2 */ { &object_po_composer_Anim_00188C, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 3 */ { &object_po_composer_Anim_000570, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 4 */ { &object_po_composer_Anim_001F44, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 5 */ { &object_po_composer_Anim_0023E8, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 6 */ { &object_po_composer_Anim_002AE0, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 7 */ { &object_po_composer_Anim_000A58, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 8 */ { &object_po_composer_Anim_001420, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 9 */ { &object_po_composer_Anim_003024, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 10 */ { &object_po_composer_Anim_00334C, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 11 */ { &object_po_composer_Anim_0015B8, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 12 */ { &object_po_composer_Anim_00020C, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, +}; + +static Color_RGBA8 sLightColorInit = { 255, 255, 210, 0 }; + +static Color_RGBA8 sEnvColorInit = { 0, 0, 0, 255 }; + +Color_RGBA8 D_80BC6948 = { 75, 20, 25, 255 }; + +Color_RGBA8 D_80BC694C = { 80, 110, 90, 255 }; + +Color_RGBA8 D_80BC6950 = { 90, 85, 50, 255 }; + +Color_RGBA8 D_80BC6954 = { 100, 90, 100, 255 }; + +static InitChainEntry sInitChain[] = { ICHAIN_F32(targetArrowOffset, 3200, ICHAIN_STOP), }; -#endif +static s32 sPlayerIsPlayingOcarina = false; -extern ColliderCylinderInit D_80BC6780; -extern ColliderJntSphElementInit D_80BC67AC[1]; -extern ColliderJntSphInit D_80BC67D0; -extern CollisionCheckInfoInit D_80BC67E0; -extern DamageTable D_80BC67E8; -extern InitChainEntry D_80BC6958[]; +void EnPoComposer_Init(Actor* thisx, PlayState* play) { + EnPoComposer* this = THIS; -extern UNK_TYPE D_0600188C; -extern UNK_TYPE D_06006E08; -extern UNK_TYPE D_06006FD8; + Actor_ProcessInitChain(&this->actor, sInitChain); + ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f); + SkelAnime_InitFlex(play, &this->skelAnime, &object_po_composer_Skel_009930, &object_po_composer_Anim_00188C, + this->jointTable, this->morphTable, OBJECT_PO_COMPOSER_LIMB_MAX); + Collider_InitJntSph(play, &this->lanternCollider); + Collider_SetJntSph(play, &this->lanternCollider, &this->actor, &sJntSphInit, this->lanternColliderElements); + Collider_InitCylinder(play, &this->bodyCollider); + Collider_SetCylinder(play, &this->bodyCollider, &this->actor, &sCylinderInit); + CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit); + this->lightNode = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfo); + Lights_PointGlowSetInfo(&this->lightInfo, this->actor.home.pos.x, this->actor.home.pos.y, this->actor.home.pos.z, + 255, 255, 255, 0); + this->actor.flags &= ~1; + this->lightColor = sLightColorInit; + this->envColor = sEnvColorInit; + this->lastCsAction = COMPOSER_CS_ACTION_NONE; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/EnPoComposer_Init.s") + if (PO_COMPOSER_IS_FLAT(&this->actor)) { + this->unk290 = 0; + this->unk330 = true; + EnPoComposer_SetupStartedCutscene(this); + } else if (this->actor.params & 0x4000) { + if (gSaveContext.save.entrance != 0x20A0) { + Actor_Kill(&this->actor); + } else { + this->unk290 = 0; + this->unk330 = true; + EnPoComposer_SetupStartedCutscene(this); + } + } else { + s32 i; + s16 csIndex = this->actor.csId; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/EnPoComposer_Destroy.s") + if (gSaveContext.save.saveInfo.weekEventReg[14] & 4) { + Actor_Kill(&this->actor); + return; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5250.s") + for (i = 0; i < ARRAY_COUNT(this->csIndices); i++) { + if (csIndex == -1) { + break; + } + this->csIndices[i] = csIndex; + csIndex = CutsceneManager_GetAdditionalCsId(csIndex); + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5294.s") + if (gSaveContext.save.saveInfo.weekEventReg[14] & 2) { + this->unk290 = 1; + } else { + this->unk290 = 0; + } + this->unk330 = false; + EnPoComposer_SetupAwaitPlayer(this); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC52D4.s") +void EnPoComposer_Destroy(Actor* thisx, PlayState* play) { + EnPoComposer* this = THIS; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC52F0.s") + LightContext_RemoveLight(play, &play->lightCtx, this->lightNode); + Collider_DestroyJntSph(play, &this->lanternCollider); + Collider_DestroyCylinder(play, &this->bodyCollider); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC538C.s") +void EnPoComposer_SetupAwaitPlayer(EnPoComposer* this) { + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_IDLE_STILL); + this->actionFunc = EnPoComposer_AwaitPlayer; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC53A0.s") +void EnPoComposer_AwaitPlayer(EnPoComposer* this, PlayState* play) { + if (this->actor.xzDistToPlayer < 200.0f) { + EnPoComposer_SetupStartCutscene(this); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC53B0.s") +void EnPoComposer_SetupStartCutscene(EnPoComposer* this) { + this->unk330 = true; + this->actionFunc = EnPoComposer_StartCutscene; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5404.s") +void EnPoComposer_StartCutscene(EnPoComposer* this, PlayState* play) { + if (CutsceneManager_IsNext(this->csIndices[this->unk290])) { + CutsceneManager_Start(this->csIndices[this->unk290], &this->actor); + EnPoComposer_SetupStartedCutscene(this); + } else { + if (CutsceneManager_GetCurrentCsId() == 0x7C) { + CutsceneManager_Stop(0x7C); + } + CutsceneManager_Queue(this->csIndices[this->unk290]); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC552C.s") +void EnPoComposer_SetupStartedCutscene(EnPoComposer* this) { + this->actionFunc = EnPoComposer_StartedCutscene; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5570.s") +void EnPoComposer_StartedCutscene(EnPoComposer* this, PlayState* play) { +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5580.s") +void EnPoComposer_SetupPlayCurse(EnPoComposer* this) { + this->actionTimer = 0; + this->actor.flags |= ACTOR_FLAG_TARGETABLE; + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_PLAYING_CURSE); + this->actionFunc = EnPoComposer_PlayCurse; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC55E0.s") +void EnPoComposer_PlayCurse(EnPoComposer* this, PlayState* play) { + Player* player = GET_PLAYER(play); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC562C.s") + // Damage the player every second + if (this->actionTimer == 20) { + func_800B8D10(play, &this->actor, 0.0f, 0, 0.0f, 1, 4); + this->actionTimer = 0; + } else { + this->actionTimer++; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5670.s") + // Ocarina check + if (player->stateFlags2 & PLAYER_STATE2_8000000) { + if (!sPlayerIsPlayingOcarina) { + // Play sound whenever the player begins playing the Ocarina + Audio_PlaySfx(NA_SE_SY_TRE_BOX_APPEAR); + } + sPlayerIsPlayingOcarina = true; + } else { + sPlayerIsPlayingOcarina = false; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5680.s") + // Song check, check if player just played song of storms or song of healing to react to + if (play->msgCtx.ocarinaMode == 3) { + switch (play->msgCtx.lastPlayedSong) { + case OCARINA_SONG_STORMS: + this->unk290 = 3; + EnPoComposer_SetupStartCutscene(this); + break; + case OCARINA_SONG_HEALING: + this->unk290 = 2; + EnPoComposer_SetupStartCutscene(this); + break; + } + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC56D0.s") + // Play sharp's curse bgm + func_801A1FB4(3, &this->actor.projectedPos, NA_BGM_SHARPS_CURSE, 2000.0f); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5738.s") +void EnPoComposer_SetupIdleStill(EnPoComposer* this) { + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_IDLE_STILL); + this->actionFunc = EnPoComposer_IdleStill; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5780.s") +void EnPoComposer_IdleStill(EnPoComposer* this, PlayState* play) { +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC57E8.s") +void EnPoComposer_SetupAppear(EnPoComposer* this) { + this->actionTimer = 0; + Actor_PlaySfx(&this->actor, NA_SE_EN_STALKIDS_APPEAR); + Actor_PlaySfx(&this->actor, NA_SE_EN_PO_LAUGH); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_APPEAR_DISAPPEAR); + this->actionFunc = EnPoComposer_Appear; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5830.s") +void EnPoComposer_Appear(EnPoComposer* this, PlayState* play) { + this->actionTimer++; + this->actor.shape.rot.y += 0x1000; + if (this->actionTimer == 32) { + EnPoComposer_SetupIdleStill(this); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5898.s") +void EnPoComposer_SetupIdle(EnPoComposer* this) { + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_IDLE); + this->actionFunc = EnPoComposer_Idle; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC58E0.s") +void EnPoComposer_Idle(EnPoComposer* this, PlayState* play) { +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC59BC.s") +void EnPoComposer_SetupRaiseArms(EnPoComposer* this) { + this->csActionTimer = 0; + Actor_PlaySfx(&this->actor, NA_SE_EN_SHARP_REACTION); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_RAISE_ARMS); + this->actionFunc = EnPoComposer_RaiseArms; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC59EC.s") +void EnPoComposer_RaiseArms(EnPoComposer* this, PlayState* play) { + if (this->csActionTimer == 0 && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + this->csActionTimer++; + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_ARMS_RAISED); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5CC8.s") +void EnPoComposer_SetupLowerArms(EnPoComposer* this) { + this->csActionTimer = 0; + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_LOWER_ARMS); + this->actionFunc = EnPoComposer_LowerArms; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5D34.s") +void EnPoComposer_LowerArms(EnPoComposer* this, PlayState* play) { + if (this->csActionTimer == 0 && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + this->csActionTimer++; + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_IDLE_FACING_DOWN); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5DEC.s") +void EnPoComposer_SetupCutscenePlayCurse(EnPoComposer* this) { + this->csActionTimer = 0; + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_BEGIN_PLAYING_CURSE); + this->actionFunc = EnPoComposer_CutscenePlayCurse; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC5FE8.s") +void EnPoComposer_CutscenePlayCurse(EnPoComposer* this, PlayState* play) { + if (this->csActionTimer == 0 && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + this->csActionTimer++; + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_PLAYING_CURSE); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/EnPoComposer_Update.s") +void EnPoComposer_SetupRoll(EnPoComposer* this) { + this->csActionTimer = 0; + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_BEGIN_ROLLING); + this->actionFunc = EnPoComposer_Roll; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC60BC.s") +void EnPoComposer_Roll(EnPoComposer* this, PlayState* play) { + if (this->csActionTimer == 0) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + this->csActionTimer++; + Actor_PlaySfx(&this->actor, NA_SE_EN_SHARP_REACTION); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_ROLLING); + } + } else if (Animation_OnFrame(&this->skelAnime, 1.0f) && this->lightColor.a >= 33) { + if (this->csActionTimer == 1) { + Actor_PlaySfx(&this->actor, NA_SE_EN_LAST3_DEAD_WIND2_OLD); + this->csActionTimer = 2; + } else { + Actor_PlaySfx(&this->actor, NA_SE_EN_LAST3_DEAD_WIND3_OLD); + this->csActionTimer = 1; + } + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/func_80BC617C.s") +void EnPoComposer_SharpCutsceneDone(EnPoComposer* this) { + gSaveContext.save.saveInfo.weekEventReg[14] |= 4; + Actor_Kill(&this->actor); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Po_Composer/EnPoComposer_Draw.s") +s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { + u16 actorAction = PO_COMPOSER_IS_FLAT(&this->actor) ? 0x1E2 : 0x1E1; + s32 actorActionIdx; + + if (!this->unk330) { + return false; + } + + if (Cutscene_IsCueInChannel(play, actorAction)) { + actorActionIdx = Cutscene_GetCueChannel(play, actorAction); + if (this->lastCsAction != play->csCtx.actorCues[actorActionIdx]->id) { + this->lastCsAction = play->csCtx.actorCues[actorActionIdx]->id; + switch (play->csCtx.actorCues[actorActionIdx]->id) { + case COMPOSER_CS_ACTION_IDLE: // loop idle + EnPoComposer_SetupIdleStill(this); + break; + case COMPOSER_CS_ACTION_APPEAR_SPIN: // appear/disappear -> loop idle + EnPoComposer_SetupAppear(this); + break; + case COMPOSER_CS_ACTION_IDLE2: // loop sharp idle + EnPoComposer_SetupIdle(this); + break; + case COMPOSER_CS_ACTION_RAISE_ARMS: // raise arms -> loop arms raised + EnPoComposer_SetupRaiseArms(this); + break; + case COMPOSER_CS_ACTION_LOWER_ARMS: // lower arms -> loop idle + EnPoComposer_SetupLowerArms(this); + break; + case COMPOSER_CS_ACTION_PLAY_CURSE: // begin playing -> loop playing + EnPoComposer_SetupCutscenePlayCurse(this); + break; + case COMPOSER_CS_ACTION_ROLL: // begin rolling -> loop rolling + EnPoComposer_SetupRoll(this); + break; + case COMPOSER_CS_ACTION_APPEAR: // appear + this->visible = true; + break; + case COMPOSER_CS_ACTION_DISAPPEAR: // disappear + this->visible = false; + Actor_PlaySfx(&this->actor, NA_SE_EN_PO_DISAPPEAR); + break; + case COMPOSER_CS_ACTION_DONE: + if (actorAction == 0x1E1) { + EnPoComposer_SharpCutsceneDone(this); + } else { + Actor_Kill(&this->actor); + } + break; + } + } + if (this->actionFunc != EnPoComposer_Appear) { + Cutscene_ActorTranslateAndYaw(&this->actor, play, actorActionIdx); + } else { + Cutscene_ActorTranslate(&this->actor, play, actorActionIdx); + } + + EnPoComposer_StepLightAlpha(this); + + if (this->unk290 == 3 && play->csCtx.curFrame == 204) { + Audio_PlaySfx(NA_SE_SY_DIZZY_EFFECT); + } + + if (this->visible == true) { + Actor_PlaySfx_Flagged(&this->actor, NA_SE_EN_SHARP_FLOAT - SFX_FLAG); + } + return true; + } + + if (this->actionFunc != EnPoComposer_StartedCutscene && this->actionFunc != EnPoComposer_StartCutscene && + this->actionFunc != EnPoComposer_PlayCurse && play->csCtx.state == 0) { + if (PO_COMPOSER_IS_FLAT(&this->actor)) { + EnPoComposer_SetupStartedCutscene(this); + } else if (this->actor.params & 0x4000) { + EnPoComposer_SetupStartedCutscene(this); + } else { + this->unk330 = false; + if (this->unk290 < 3) { + if (!(gSaveContext.save.saveInfo.weekEventReg[14] & 2)) { + gSaveContext.save.saveInfo.weekEventReg[14] |= 2; + } + EnPoComposer_SetupPlayCurse(this); + } else { + EnPoComposer_SetupStartedCutscene(this); + } + } + } + + this->lastCsAction = COMPOSER_CS_ACTION_NONE; + return false; +} + +void EnPoComposer_StepLightAlpha(EnPoComposer* this) { + if (this->visible == true && this->lightColor.a != 255) { + if (this->lightColor.a > 247) { + this->lightColor.a = 255; + } else { + this->lightColor.a = this->lightColor.a + 7; + } + } else if (!this->visible && this->lightColor.a != 0) { + if (this->lightColor.a < 8) { + this->lightColor.a = 0; + } else { + this->lightColor.a = this->lightColor.a - 7; + } + } +} + +void EnPoComposer_StepLightColor(EnPoComposer* this) { + s16 color; + + color = this->lightColor.r + 5; + this->lightColor.r = CLAMP_MAX(color, 255); + + color = this->lightColor.g + 5; + this->lightColor.g = CLAMP_MAX(color, 255); + + if (this->lightColor.b > 210) { + color = this->lightColor.b - 5; + this->lightColor.b = CLAMP_MIN(color, 210); + } else { + color = this->lightColor.b + 5; + this->lightColor.b = CLAMP_MAX(color, 210); + } +} + +void EnPoComposer_UpdateEnvColor(EnPoComposer* this) { + f32 temp_fv0; + u32 temp_v0; + + if (this->actionFunc == EnPoComposer_Appear && this->skelAnime.curFrame < 12.0f) { + temp_v0 = 55.0f + this->skelAnime.curFrame * 16.66f; + this->envColor.b = temp_v0; + this->envColor.g = temp_v0; + this->envColor.r = temp_v0; + this->envColor.a = this->skelAnime.curFrame * 16.666666f; + } else { + temp_fv0 = Rand_ZeroOne(); + this->envColor.r = 225 + (s32)(temp_fv0 * 30.0f); + this->envColor.g = 155 + (s32)(temp_fv0 * 100.0f); + this->envColor.b = 95 + (s32)(temp_fv0 * 160.0f); + this->envColor.a = 200; + } + if (this->lightColor.a == 0) { + this->envColor.a = 0; + } +} + +void EnPoComposer_UpdateCollision(EnPoComposer* this, PlayState* play) { + Collider_UpdateCylinder(&this->actor, &this->bodyCollider); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->bodyCollider.base); + CollisionCheck_SetOC(play, &play->colChkCtx, &this->lanternCollider.base); +} + +void EnPoComposer_Update(Actor* thisx, PlayState* play) { + EnPoComposer* this = THIS; + + EnPoComposer_UpdateEnvColor(this); + SkelAnime_Update(&this->skelAnime); + Actor_SetFocus(&this->actor, 42.0f); + + this->actionFunc(this, play); + + if (!EnPoComposer_UpdateAction(this, play)) { + EnPoComposer_UpdateCollision(this, play); + } +} + +s32 EnPoComposer_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx, + Gfx** gfx) { + EnPoComposer* this = THIS; + + if (this->lightColor.a == 0 || limbIndex == OBJECT_PO_COMPOSER_LIMB_09) { // lantern + *dList = NULL; + } else if (PO_COMPOSER_IS_FLAT(&this->actor) && limbIndex == OBJECT_PO_COMPOSER_LIMB_0A) { // head + *dList = object_po_composer_DL_006FD8; // flat head + } + + if (limbIndex == 19) { + //! @bug skeleton does not have a limb 19, this is leftover from OoT Poes + gDPPipeSync((*gfx)++); + gDPSetEnvColor((*gfx)++, this->lightColor.r, this->lightColor.g, this->lightColor.b, this->lightColor.a); + } + + return 0; +} + +void EnPoComposer_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) { + EnPoComposer* this = THIS; + + Collider_UpdateSpheres(limbIndex, &this->lanternCollider); + if (limbIndex == OBJECT_PO_COMPOSER_LIMB_09) { + Matrix_Get(&this->lanternMtxF); + } +} + +void EnPoComposer_Draw(Actor* thisx, PlayState* play) { + EnPoComposer* this = THIS; + s32 pad; + Gfx* dl; + Color_RGBA8* clothingColor; + Color_RGBA8* var_t0; + Vec3f sp88; + Vec3s lightPos; + + OPEN_DISPS(play->state.gfxCtx); + + EnPoComposer_StepLightColor(this); + + // Select colors + + if (PO_COMPOSER_IS_FLAT(&this->actor)) { + clothingColor = &D_80BC694C; + var_t0 = &D_80BC6954; + } else { + clothingColor = &D_80BC6948; + var_t0 = &D_80BC6950; + } + + // Draw skeleton + + if (this->lightColor.a == 255 || this->lightColor.a == 0) { + Gfx_SetupDL25_Opa(play->state.gfxCtx); + + gSPSegment(POLY_OPA_DISP++, 0x08, + Gfx_EnvColor(play->state.gfxCtx, this->lightColor.r, this->lightColor.g, this->lightColor.b, + this->lightColor.a)); + gSPSegment( + POLY_OPA_DISP++, 0x0A, + Gfx_EnvColor(play->state.gfxCtx, clothingColor->r, clothingColor->g, clothingColor->b, this->lightColor.a)); + gSPSegment(POLY_OPA_DISP++, 0x0B, + Gfx_EnvColor(play->state.gfxCtx, var_t0->r, var_t0->g, var_t0->b, this->lightColor.a)); + gSPSegment(POLY_OPA_DISP++, 0x0C, D_801AEFA0); + + POLY_OPA_DISP = + SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnPoComposer_OverrideLimbDraw, EnPoComposer_PostLimbDraw, &this->actor, POLY_OPA_DISP); + } else { + Gfx_SetupDL25_Opa(play->state.gfxCtx); + Gfx_SetupDL25_Xlu(play->state.gfxCtx); + + gSPSegment(POLY_XLU_DISP++, 0x08, + Gfx_EnvColor(play->state.gfxCtx, this->lightColor.r, this->lightColor.g, this->lightColor.b, + this->lightColor.a)); + gSPSegment( + POLY_XLU_DISP++, 0x0A, + Gfx_EnvColor(play->state.gfxCtx, clothingColor->r, clothingColor->g, clothingColor->b, this->lightColor.a)); + gSPSegment(POLY_XLU_DISP++, 0x0B, + Gfx_EnvColor(play->state.gfxCtx, var_t0->r, var_t0->g, var_t0->b, this->lightColor.a)); + gSPSegment(POLY_XLU_DISP++, 0x0C, D_801AEF88); + + POLY_XLU_DISP = + SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, + EnPoComposer_OverrideLimbDraw, EnPoComposer_PostLimbDraw, &this->actor, POLY_XLU_DISP); + } + + if (this->lightColor.a != 0) { + // Draw lantern if visible + + if (this->lightColor.a == 255) { + Scene_SetRenderModeXlu(play, 0, 1); + dl = POLY_OPA_DISP; + } else { + Scene_SetRenderModeXlu(play, 1, 2); + dl = POLY_XLU_DISP; + } + + gDPPipeSync(&dl[0]); + gDPSetEnvColor(&dl[1], this->envColor.r, this->envColor.g, this->envColor.b, this->lightColor.a); + + Matrix_Put(&this->lanternMtxF); + gSPMatrix(&dl[2], Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPDisplayList(&dl[3], object_po_composer_DL_006E08); // lantern base + gSPDisplayList(&dl[4], object_po_composer_DL_006F38); // lantern enclosure + + gDPPipeSync(&dl[5]); + gDPSetEnvColor(&dl[6], clothingColor->r, clothingColor->g, clothingColor->b, this->lightColor.a); + gSPDisplayList(&dl[7], object_po_composer_DL_006EA8); // lantern top + + if (this->lightColor.a == 255) { + POLY_OPA_DISP = &dl[8]; + } else { + POLY_XLU_DISP = &dl[8]; + } + } + + Matrix_Put(&play->billboardMtxF); + Matrix_MultVecZ(15.0f, &sp88); + lightPos = this->lanternCollider.elements[0].dim.worldSphere.center; + lightPos.x += (s16)sp88.x; + lightPos.y += (s16)sp88.y; + lightPos.z += (s16)sp88.z; + + Lights_PointGlowSetInfo(&this->lightInfo, lightPos.x, lightPos.y, lightPos.z, this->envColor.r, this->envColor.g, + this->envColor.b, this->envColor.a * 0.78431374f); + + CLOSE_DISPS(play->state.gfxCtx); +} diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h index a42b5048f..8eb1d8ebd 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h @@ -2,6 +2,24 @@ #define Z_EN_PO_COMPOSER_H #include "global.h" +#include "objects/object_po_composer/object_po_composer.h" + +#define PO_COMPOSER_IS_FLAT(actor) ((actor)->params & 0x8000) + +typedef enum { + COMPOSER_CS_ACTION_IDLE = 1, + COMPOSER_CS_ACTION_APPEAR_SPIN, + COMPOSER_CS_ACTION_IDLE2, + COMPOSER_CS_ACTION_RAISE_ARMS, + COMPOSER_CS_ACTION_LOWER_ARMS, + COMPOSER_CS_ACTION_PLAY_CURSE, + COMPOSER_CS_ACTION_ROLL, + COMPOSER_CS_ACTION_APPEAR, + COMPOSER_CS_ACTION_DISAPPEAR, + COMPOSER_CS_ACTION_DONE, + + COMPOSER_CS_ACTION_NONE = 99 +} EnPoComposerCutsceneAction; struct EnPoComposer; @@ -9,9 +27,26 @@ typedef void (*EnPoComposerActionFunc)(struct EnPoComposer*, PlayState*); typedef struct EnPoComposer { /* 0x000 */ Actor actor; - /* 0x144 */ char unk_144[0xF0]; + /* 0x144 */ ColliderCylinder bodyCollider; + /* 0x190 */ ColliderJntSph lanternCollider; + /* 0x1B0 */ ColliderJntSphElement lanternColliderElements[1]; + /* 0x1F0 */ SkelAnime skelAnime; /* 0x234 */ EnPoComposerActionFunc actionFunc; - /* 0x238 */ char unk_238[0x108]; + /* 0x238 */ MtxF lanternMtxF; + /* 0x278 */ LightNode* lightNode; + /* 0x27C */ LightInfo lightInfo; + /* 0x28A */ char unk_28A[0x6]; + /* 0x290 */ s32 unk290; // cutscene to play + /* 0x294 */ Vec3s jointTable[OBJECT_PO_COMPOSER_LIMB_MAX]; + /* 0x2DC */ Vec3s morphTable[OBJECT_PO_COMPOSER_LIMB_MAX]; + /* 0x324 */ s16 csIndices[4]; + /* 0x32C */ s16 actionTimer; + /* 0x32E */ s16 csActionTimer; + /* 0x330 */ s16 unk330; // boolean, do respond to cs actions? + /* 0x332 */ s16 visible; + /* 0x334 */ u16 lastCsAction; + /* 0x336 */ Color_RGBA8 lightColor; + /* 0x33A */ Color_RGBA8 envColor; } EnPoComposer; // size = 0x340 #endif // Z_EN_PO_COMPOSER_H From 4c1e0be9f09846eaa9e9f5f3dd410f2ac494baaf Mon Sep 17 00:00:00 2001 From: Thar0 <17233964+Thar0@users.noreply.github.com> Date: Sun, 24 Sep 2023 02:20:19 +0100 Subject: [PATCH 2/6] Few more labels and document object --- assets/xml/objects/object_po_composer.xml | 80 ++++--- .../ovl_En_Po_Composer/z_en_po_composer.c | 198 +++++++++--------- .../ovl_En_Po_Composer/z_en_po_composer.h | 37 ++-- 3 files changed, 172 insertions(+), 143 deletions(-) diff --git a/assets/xml/objects/object_po_composer.xml b/assets/xml/objects/object_po_composer.xml index 40d77d827..96c9a6c17 100644 --- a/assets/xml/objects/object_po_composer.xml +++ b/assets/xml/objects/object_po_composer.xml @@ -1,28 +1,36 @@  + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -35,17 +43,21 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c index 0f88f364d..1089446bc 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c @@ -1,7 +1,7 @@ /* * File: z_en_po_composer.c * Overlay: ovl_En_Po_Composer - * Description: Poe Composers + * Description: Poe Composers Flat and Sharp */ #include "z_en_po_composer.h" @@ -129,49 +129,50 @@ static DamageTable sDamageTable = { }; typedef enum { - PO_COMPOSER_ANIM_IDLE_STILL, - PO_COMPOSER_ANIM_APPEAR_DISAPPEAR, - PO_COMPOSER_ANIM_IDLE, - PO_COMPOSER_ANIM_RAISE_ARMS, - PO_COMPOSER_ANIM_ARMS_RAISED, - PO_COMPOSER_ANIM_LOWER_ARMS, - PO_COMPOSER_ANIM_IDLE_FACING_DOWN, - PO_COMPOSER_ANIM_BEGIN_PLAYING_CURSE, - PO_COMPOSER_ANIM_PLAYING_CURSE, - PO_COMPOSER_ANIM_BEGIN_ROLLING, - PO_COMPOSER_ANIM_ROLLING, - PO_COMPOSER_ANIM_FLEE, - PO_COMPOSER_ANIM_ATTACK, - PO_COMPOSER_ANIM_MAX, + /* 0 */ PO_COMPOSER_ANIM_IDLE_STILL, + /* 1 */ PO_COMPOSER_ANIM_APPEAR_DISAPPEAR, + /* 2 */ PO_COMPOSER_ANIM_IDLE, + /* 3 */ PO_COMPOSER_ANIM_RAISE_ARMS, + /* 4 */ PO_COMPOSER_ANIM_ARMS_RAISED, + /* 5 */ PO_COMPOSER_ANIM_LOWER_ARMS, + /* 6 */ PO_COMPOSER_ANIM_IDLE_FACING_DOWN, + /* 7 */ PO_COMPOSER_ANIM_BEGIN_PLAYING_CURSE, + /* 8 */ PO_COMPOSER_ANIM_PLAYING_CURSE, + /* 9 */ PO_COMPOSER_ANIM_BEGIN_ROLLING, + /* 10 */ PO_COMPOSER_ANIM_ROLLING, + /* 11 */ PO_COMPOSER_ANIM_FLEE, + /* 12 */ PO_COMPOSER_ANIM_ATTACK, + + /* 13 */ PO_COMPOSER_ANIM_MAX } EnPoComposerAnim; static AnimationInfo sAnimationInfo[PO_COMPOSER_ANIM_MAX] = { - /* 0 */ { &object_po_composer_Anim_003DB0, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 1 */ { &object_po_composer_Anim_003954, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, - /* 2 */ { &object_po_composer_Anim_00188C, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 3 */ { &object_po_composer_Anim_000570, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 4 */ { &object_po_composer_Anim_001F44, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 5 */ { &object_po_composer_Anim_0023E8, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 6 */ { &object_po_composer_Anim_002AE0, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 7 */ { &object_po_composer_Anim_000A58, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 8 */ { &object_po_composer_Anim_001420, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 9 */ { &object_po_composer_Anim_003024, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 10 */ { &object_po_composer_Anim_00334C, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 11 */ { &object_po_composer_Anim_0015B8, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 12 */ { &object_po_composer_Anim_00020C, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, + /* 0 */ { &gPoeComposerIdleStillAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 1 */ { &gPoeComposerAppearDisappearAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, + /* 2 */ { &gPoeComposerIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 3 */ { &gPoeComposerRaiseArmsAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 4 */ { &gPoeComposerArmsRaisedAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 5 */ { &gPoeComposerLowerArmsAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 6 */ { &gPoeComposerIdleLookingDownAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 7 */ { &gPoeComposerBeginPlayingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 8 */ { &gPoeComposerPlayingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 9 */ { &gPoeComposerBeginRollingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 10 */ { &gPoeComposerRollingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 11 */ { &gPoeComposerFleeAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 12 */ { &gPoeComposerAttackAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, }; static Color_RGBA8 sLightColorInit = { 255, 255, 210, 0 }; static Color_RGBA8 sEnvColorInit = { 0, 0, 0, 255 }; -Color_RGBA8 D_80BC6948 = { 75, 20, 25, 255 }; +static Color_RGBA8 sSharpClothingColor1 = { 75, 20, 25, 255 }; -Color_RGBA8 D_80BC694C = { 80, 110, 90, 255 }; +static Color_RGBA8 sFlatClothingColor1 = { 80, 110, 90, 255 }; -Color_RGBA8 D_80BC6950 = { 90, 85, 50, 255 }; +static Color_RGBA8 sSharpClothingColor2 = { 90, 85, 50, 255 }; -Color_RGBA8 D_80BC6954 = { 100, 90, 100, 255 }; +static Color_RGBA8 sFlatClothingColor2 = { 100, 90, 100, 255 }; static InitChainEntry sInitChain[] = { ICHAIN_F32(targetArrowOffset, 3200, ICHAIN_STOP), @@ -184,8 +185,8 @@ void EnPoComposer_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->actor, sInitChain); ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f); - SkelAnime_InitFlex(play, &this->skelAnime, &object_po_composer_Skel_009930, &object_po_composer_Anim_00188C, - this->jointTable, this->morphTable, OBJECT_PO_COMPOSER_LIMB_MAX); + SkelAnime_InitFlex(play, &this->skelAnime, &gPoeComposerSkel, &gPoeComposerIdleAnim, + this->jointTable, this->morphTable, PO_COMPOSER_LIMB_MAX); Collider_InitJntSph(play, &this->lanternCollider); Collider_SetJntSph(play, &this->lanternCollider, &this->actor, &sJntSphInit, this->lanternColliderElements); Collider_InitCylinder(play, &this->bodyCollider); @@ -194,21 +195,21 @@ void EnPoComposer_Init(Actor* thisx, PlayState* play) { this->lightNode = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfo); Lights_PointGlowSetInfo(&this->lightInfo, this->actor.home.pos.x, this->actor.home.pos.y, this->actor.home.pos.z, 255, 255, 255, 0); - this->actor.flags &= ~1; + this->actor.flags &= ~ACTOR_FLAG_TARGETABLE; this->lightColor = sLightColorInit; this->envColor = sEnvColorInit; this->lastCsAction = COMPOSER_CS_ACTION_NONE; if (PO_COMPOSER_IS_FLAT(&this->actor)) { - this->unk290 = 0; - this->unk330 = true; + this->sharpCsNum = 0; + this->inCutscene = true; EnPoComposer_SetupStartedCutscene(this); } else if (this->actor.params & 0x4000) { if (gSaveContext.save.entrance != 0x20A0) { Actor_Kill(&this->actor); } else { - this->unk290 = 0; - this->unk330 = true; + this->sharpCsNum = SHARP_CS_ENCOUNTER_FIRST; + this->inCutscene = true; EnPoComposer_SetupStartedCutscene(this); } } else { @@ -221,7 +222,7 @@ void EnPoComposer_Init(Actor* thisx, PlayState* play) { } for (i = 0; i < ARRAY_COUNT(this->csIndices); i++) { - if (csIndex == -1) { + if (csIndex == CS_ID_NONE) { break; } this->csIndices[i] = csIndex; @@ -229,11 +230,11 @@ void EnPoComposer_Init(Actor* thisx, PlayState* play) { } if (gSaveContext.save.saveInfo.weekEventReg[14] & 2) { - this->unk290 = 1; + this->sharpCsNum = SHARP_CS_ENCOUNTER_OTHER; } else { - this->unk290 = 0; + this->sharpCsNum = SHARP_CS_ENCOUNTER_FIRST; } - this->unk330 = false; + this->inCutscene = false; EnPoComposer_SetupAwaitPlayer(this); } } @@ -258,19 +259,19 @@ void EnPoComposer_AwaitPlayer(EnPoComposer* this, PlayState* play) { } void EnPoComposer_SetupStartCutscene(EnPoComposer* this) { - this->unk330 = true; + this->inCutscene = true; this->actionFunc = EnPoComposer_StartCutscene; } void EnPoComposer_StartCutscene(EnPoComposer* this, PlayState* play) { - if (CutsceneManager_IsNext(this->csIndices[this->unk290])) { - CutsceneManager_Start(this->csIndices[this->unk290], &this->actor); + if (CutsceneManager_IsNext(this->csIndices[this->sharpCsNum])) { + CutsceneManager_Start(this->csIndices[this->sharpCsNum], &this->actor); EnPoComposer_SetupStartedCutscene(this); } else { - if (CutsceneManager_GetCurrentCsId() == 0x7C) { - CutsceneManager_Stop(0x7C); + if (CutsceneManager_GetCurrentCsId() == CS_ID_GLOBAL_TALK) { + CutsceneManager_Stop(CS_ID_GLOBAL_TALK); } - CutsceneManager_Queue(this->csIndices[this->unk290]); + CutsceneManager_Queue(this->csIndices[this->sharpCsNum]); } } @@ -314,18 +315,19 @@ void EnPoComposer_PlayCurse(EnPoComposer* this, PlayState* play) { if (play->msgCtx.ocarinaMode == 3) { switch (play->msgCtx.lastPlayedSong) { case OCARINA_SONG_STORMS: - this->unk290 = 3; + this->sharpCsNum = SHARP_CS_SONG_STORMS; EnPoComposer_SetupStartCutscene(this); break; + case OCARINA_SONG_HEALING: - this->unk290 = 2; + this->sharpCsNum = SHARP_CS_SONG_HEALING; EnPoComposer_SetupStartCutscene(this); break; } } // Play sharp's curse bgm - func_801A1FB4(3, &this->actor.projectedPos, NA_BGM_SHARPS_CURSE, 2000.0f); + func_801A1FB4(SEQ_PLAYER_BGM_SUB, &this->actor.projectedPos, NA_BGM_SHARPS_CURSE, 2000.0f); } void EnPoComposer_SetupIdleStill(EnPoComposer* this) { @@ -430,48 +432,59 @@ void EnPoComposer_SharpCutsceneDone(EnPoComposer* this) { } s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { - u16 actorAction = PO_COMPOSER_IS_FLAT(&this->actor) ? 0x1E2 : 0x1E1; - s32 actorActionIdx; + u16 cueType = PO_COMPOSER_IS_FLAT(&this->actor) ? 0x1E2 : 0x1E1; + s32 cueChannel; - if (!this->unk330) { + if (!this->inCutscene) { return false; } - if (Cutscene_IsCueInChannel(play, actorAction)) { - actorActionIdx = Cutscene_GetCueChannel(play, actorAction); - if (this->lastCsAction != play->csCtx.actorCues[actorActionIdx]->id) { - this->lastCsAction = play->csCtx.actorCues[actorActionIdx]->id; - switch (play->csCtx.actorCues[actorActionIdx]->id) { + if (Cutscene_IsCueInChannel(play, cueType)) { + cueChannel = Cutscene_GetCueChannel(play, cueType); + + if (this->lastCsAction != play->csCtx.actorCues[cueChannel]->id) { + this->lastCsAction = play->csCtx.actorCues[cueChannel]->id; + + switch (play->csCtx.actorCues[cueChannel]->id) { case COMPOSER_CS_ACTION_IDLE: // loop idle EnPoComposer_SetupIdleStill(this); break; + case COMPOSER_CS_ACTION_APPEAR_SPIN: // appear/disappear -> loop idle EnPoComposer_SetupAppear(this); break; + case COMPOSER_CS_ACTION_IDLE2: // loop sharp idle EnPoComposer_SetupIdle(this); break; + case COMPOSER_CS_ACTION_RAISE_ARMS: // raise arms -> loop arms raised EnPoComposer_SetupRaiseArms(this); break; + case COMPOSER_CS_ACTION_LOWER_ARMS: // lower arms -> loop idle EnPoComposer_SetupLowerArms(this); break; + case COMPOSER_CS_ACTION_PLAY_CURSE: // begin playing -> loop playing EnPoComposer_SetupCutscenePlayCurse(this); break; + case COMPOSER_CS_ACTION_ROLL: // begin rolling -> loop rolling EnPoComposer_SetupRoll(this); break; + case COMPOSER_CS_ACTION_APPEAR: // appear this->visible = true; break; + case COMPOSER_CS_ACTION_DISAPPEAR: // disappear this->visible = false; Actor_PlaySfx(&this->actor, NA_SE_EN_PO_DISAPPEAR); break; + case COMPOSER_CS_ACTION_DONE: - if (actorAction == 0x1E1) { + if (cueType == 0x1E1) { EnPoComposer_SharpCutsceneDone(this); } else { Actor_Kill(&this->actor); @@ -479,15 +492,16 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { break; } } + if (this->actionFunc != EnPoComposer_Appear) { - Cutscene_ActorTranslateAndYaw(&this->actor, play, actorActionIdx); + Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel); } else { - Cutscene_ActorTranslate(&this->actor, play, actorActionIdx); + Cutscene_ActorTranslate(&this->actor, play, cueChannel); } EnPoComposer_StepLightAlpha(this); - if (this->unk290 == 3 && play->csCtx.curFrame == 204) { + if (this->sharpCsNum == SHARP_CS_SONG_STORMS && play->csCtx.curFrame == 204) { Audio_PlaySfx(NA_SE_SY_DIZZY_EFFECT); } @@ -498,14 +512,16 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { } if (this->actionFunc != EnPoComposer_StartedCutscene && this->actionFunc != EnPoComposer_StartCutscene && - this->actionFunc != EnPoComposer_PlayCurse && play->csCtx.state == 0) { + this->actionFunc != EnPoComposer_PlayCurse && play->csCtx.state == CS_STATE_IDLE) { + if (PO_COMPOSER_IS_FLAT(&this->actor)) { EnPoComposer_SetupStartedCutscene(this); } else if (this->actor.params & 0x4000) { EnPoComposer_SetupStartedCutscene(this); } else { - this->unk330 = false; - if (this->unk290 < 3) { + this->inCutscene = false; + + if (this->sharpCsNum < SHARP_CS_SONG_STORMS) { if (!(gSaveContext.save.saveInfo.weekEventReg[14] & 2)) { gSaveContext.save.saveInfo.weekEventReg[14] |= 2; } @@ -555,20 +571,14 @@ void EnPoComposer_StepLightColor(EnPoComposer* this) { } void EnPoComposer_UpdateEnvColor(EnPoComposer* this) { - f32 temp_fv0; - u32 temp_v0; - if (this->actionFunc == EnPoComposer_Appear && this->skelAnime.curFrame < 12.0f) { - temp_v0 = 55.0f + this->skelAnime.curFrame * 16.66f; - this->envColor.b = temp_v0; - this->envColor.g = temp_v0; - this->envColor.r = temp_v0; + this->envColor.r = this->envColor.g = this->envColor.b = 55.0f + this->skelAnime.curFrame * 16.66f; this->envColor.a = this->skelAnime.curFrame * 16.666666f; } else { - temp_fv0 = Rand_ZeroOne(); - this->envColor.r = 225 + (s32)(temp_fv0 * 30.0f); - this->envColor.g = 155 + (s32)(temp_fv0 * 100.0f); - this->envColor.b = 95 + (s32)(temp_fv0 * 160.0f); + f32 rand = Rand_ZeroOne(); + this->envColor.r = 225 + (s32)(rand * 30.0f); + this->envColor.g = 155 + (s32)(rand * 100.0f); + this->envColor.b = 95 + (s32)(rand * 160.0f); this->envColor.a = 200; } if (this->lightColor.a == 0) { @@ -600,10 +610,10 @@ s32 EnPoComposer_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, V Gfx** gfx) { EnPoComposer* this = THIS; - if (this->lightColor.a == 0 || limbIndex == OBJECT_PO_COMPOSER_LIMB_09) { // lantern + if (this->lightColor.a == 0 || limbIndex == PO_COMPOSER_LIMB_LANTERN) { // lantern *dList = NULL; - } else if (PO_COMPOSER_IS_FLAT(&this->actor) && limbIndex == OBJECT_PO_COMPOSER_LIMB_0A) { // head - *dList = object_po_composer_DL_006FD8; // flat head + } else if (PO_COMPOSER_IS_FLAT(&this->actor) && limbIndex == PO_COMPOSER_LIMB_HEAD) { // head + *dList = gPoeComposerFlatHeadDL; // flat head } if (limbIndex == 19) { @@ -619,7 +629,7 @@ void EnPoComposer_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3 EnPoComposer* this = THIS; Collider_UpdateSpheres(limbIndex, &this->lanternCollider); - if (limbIndex == OBJECT_PO_COMPOSER_LIMB_09) { + if (limbIndex == PO_COMPOSER_LIMB_LANTERN) { Matrix_Get(&this->lanternMtxF); } } @@ -630,7 +640,7 @@ void EnPoComposer_Draw(Actor* thisx, PlayState* play) { Gfx* dl; Color_RGBA8* clothingColor; Color_RGBA8* var_t0; - Vec3f sp88; + Vec3f lightOffset; Vec3s lightPos; OPEN_DISPS(play->state.gfxCtx); @@ -640,11 +650,11 @@ void EnPoComposer_Draw(Actor* thisx, PlayState* play) { // Select colors if (PO_COMPOSER_IS_FLAT(&this->actor)) { - clothingColor = &D_80BC694C; - var_t0 = &D_80BC6954; + clothingColor = &sFlatClothingColor1; + var_t0 = &sFlatClothingColor2; } else { - clothingColor = &D_80BC6948; - var_t0 = &D_80BC6950; + clothingColor = &sSharpClothingColor1; + var_t0 = &sSharpClothingColor2; } // Draw skeleton @@ -701,12 +711,12 @@ void EnPoComposer_Draw(Actor* thisx, PlayState* play) { Matrix_Put(&this->lanternMtxF); gSPMatrix(&dl[2], Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(&dl[3], object_po_composer_DL_006E08); // lantern base - gSPDisplayList(&dl[4], object_po_composer_DL_006F38); // lantern enclosure + gSPDisplayList(&dl[3], gPoeComposerLanternBaseDL); + gSPDisplayList(&dl[4], gPoeComposerLanternGlassDL); gDPPipeSync(&dl[5]); gDPSetEnvColor(&dl[6], clothingColor->r, clothingColor->g, clothingColor->b, this->lightColor.a); - gSPDisplayList(&dl[7], object_po_composer_DL_006EA8); // lantern top + gSPDisplayList(&dl[7], gPoeComposerLanternTopDL); if (this->lightColor.a == 255) { POLY_OPA_DISP = &dl[8]; @@ -716,11 +726,11 @@ void EnPoComposer_Draw(Actor* thisx, PlayState* play) { } Matrix_Put(&play->billboardMtxF); - Matrix_MultVecZ(15.0f, &sp88); + Matrix_MultVecZ(15.0f, &lightOffset); lightPos = this->lanternCollider.elements[0].dim.worldSphere.center; - lightPos.x += (s16)sp88.x; - lightPos.y += (s16)sp88.y; - lightPos.z += (s16)sp88.z; + lightPos.x += (s16)lightOffset.x; + lightPos.y += (s16)lightOffset.y; + lightPos.z += (s16)lightOffset.z; Lights_PointGlowSetInfo(&this->lightInfo, lightPos.x, lightPos.y, lightPos.z, this->envColor.r, this->envColor.g, this->envColor.b, this->envColor.a * 0.78431374f); diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h index 8eb1d8ebd..af8c0ecb1 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h @@ -7,20 +7,27 @@ #define PO_COMPOSER_IS_FLAT(actor) ((actor)->params & 0x8000) typedef enum { - COMPOSER_CS_ACTION_IDLE = 1, - COMPOSER_CS_ACTION_APPEAR_SPIN, - COMPOSER_CS_ACTION_IDLE2, - COMPOSER_CS_ACTION_RAISE_ARMS, - COMPOSER_CS_ACTION_LOWER_ARMS, - COMPOSER_CS_ACTION_PLAY_CURSE, - COMPOSER_CS_ACTION_ROLL, - COMPOSER_CS_ACTION_APPEAR, - COMPOSER_CS_ACTION_DISAPPEAR, - COMPOSER_CS_ACTION_DONE, + /* 1 */ COMPOSER_CS_ACTION_IDLE = 1, + /* 2 */ COMPOSER_CS_ACTION_APPEAR_SPIN, + /* 3 */ COMPOSER_CS_ACTION_IDLE2, + /* 4 */ COMPOSER_CS_ACTION_RAISE_ARMS, + /* 5 */ COMPOSER_CS_ACTION_LOWER_ARMS, + /* 6 */ COMPOSER_CS_ACTION_PLAY_CURSE, + /* 7 */ COMPOSER_CS_ACTION_ROLL, + /* 8 */ COMPOSER_CS_ACTION_APPEAR, + /* 9 */ COMPOSER_CS_ACTION_DISAPPEAR, + /* 10 */ COMPOSER_CS_ACTION_DONE, - COMPOSER_CS_ACTION_NONE = 99 + /* 99 */ COMPOSER_CS_ACTION_NONE = 99 } EnPoComposerCutsceneAction; +typedef enum { + /* 0 */ SHARP_CS_ENCOUNTER_FIRST, + /* 1 */ SHARP_CS_ENCOUNTER_OTHER, + /* 2 */ SHARP_CS_SONG_HEALING, + /* 3 */ SHARP_CS_SONG_STORMS +} SharpCsId; + struct EnPoComposer; typedef void (*EnPoComposerActionFunc)(struct EnPoComposer*, PlayState*); @@ -36,13 +43,13 @@ typedef struct EnPoComposer { /* 0x278 */ LightNode* lightNode; /* 0x27C */ LightInfo lightInfo; /* 0x28A */ char unk_28A[0x6]; - /* 0x290 */ s32 unk290; // cutscene to play - /* 0x294 */ Vec3s jointTable[OBJECT_PO_COMPOSER_LIMB_MAX]; - /* 0x2DC */ Vec3s morphTable[OBJECT_PO_COMPOSER_LIMB_MAX]; + /* 0x290 */ s32 sharpCsNum; + /* 0x294 */ Vec3s jointTable[PO_COMPOSER_LIMB_MAX]; + /* 0x2DC */ Vec3s morphTable[PO_COMPOSER_LIMB_MAX]; /* 0x324 */ s16 csIndices[4]; /* 0x32C */ s16 actionTimer; /* 0x32E */ s16 csActionTimer; - /* 0x330 */ s16 unk330; // boolean, do respond to cs actions? + /* 0x330 */ s16 inCutscene; /* 0x332 */ s16 visible; /* 0x334 */ u16 lastCsAction; /* 0x336 */ Color_RGBA8 lightColor; From de9f4bd947925e16728d87612ce1b52316118cf3 Mon Sep 17 00:00:00 2001 From: Thar0 <17233964+Thar0@users.noreply.github.com> Date: Mon, 25 Sep 2023 18:06:51 +0100 Subject: [PATCH 3/6] Review changes --- assets/xml/objects/object_po_composer.xml | 2 +- .../ovl_En_Po_Composer/z_en_po_composer.c | 112 +++++++++--------- .../ovl_En_Po_Composer/z_en_po_composer.h | 28 ++--- 3 files changed, 74 insertions(+), 68 deletions(-) diff --git a/assets/xml/objects/object_po_composer.xml b/assets/xml/objects/object_po_composer.xml index 96c9a6c17..67036066f 100644 --- a/assets/xml/objects/object_po_composer.xml +++ b/assets/xml/objects/object_po_composer.xml @@ -18,7 +18,7 @@ - + diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c index 1089446bc..daa4f6338 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c @@ -32,7 +32,7 @@ void EnPoComposer_SetupStartCutscene(EnPoComposer* this); void EnPoComposer_SetupStartedCutscene(EnPoComposer* this); void EnPoComposer_StepLightAlpha(EnPoComposer* this); -const ActorInit En_Po_Composer_InitVars = { +ActorInit En_Po_Composer_InitVars = { ACTOR_EN_PO_COMPOSER, ACTORCAT_ITEMACTION, FLAGS, @@ -74,7 +74,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = { BUMP_NONE, OCELEM_ON, }, - { 9, { { 0, -1500, 0 }, 10 }, 100 }, + { PO_COMPOSER_LIMB_LANTERN, { { 0, -1500, 0 }, 10 }, 100 }, }, }; @@ -142,7 +142,6 @@ typedef enum { /* 10 */ PO_COMPOSER_ANIM_ROLLING, /* 11 */ PO_COMPOSER_ANIM_FLEE, /* 12 */ PO_COMPOSER_ANIM_ATTACK, - /* 13 */ PO_COMPOSER_ANIM_MAX } EnPoComposerAnim; @@ -185,8 +184,8 @@ void EnPoComposer_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->actor, sInitChain); ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f); - SkelAnime_InitFlex(play, &this->skelAnime, &gPoeComposerSkel, &gPoeComposerIdleAnim, - this->jointTable, this->morphTable, PO_COMPOSER_LIMB_MAX); + SkelAnime_InitFlex(play, &this->skelAnime, &gPoeComposerSkel, &gPoeComposerIdleAnim, this->jointTable, + this->morphTable, PO_COMPOSER_LIMB_MAX); Collider_InitJntSph(play, &this->lanternCollider); Collider_SetJntSph(play, &this->lanternCollider, &this->actor, &sJntSphInit, this->lanternColliderElements); Collider_InitCylinder(play, &this->bodyCollider); @@ -198,38 +197,38 @@ void EnPoComposer_Init(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_TARGETABLE; this->lightColor = sLightColorInit; this->envColor = sEnvColorInit; - this->lastCsAction = COMPOSER_CS_ACTION_NONE; + this->lastCsAction = COMPOSER_CUEID_NONE; if (PO_COMPOSER_IS_FLAT(&this->actor)) { this->sharpCsNum = 0; this->inCutscene = true; EnPoComposer_SetupStartedCutscene(this); - } else if (this->actor.params & 0x4000) { - if (gSaveContext.save.entrance != 0x20A0) { + } else if (PO_COMPOSER_4000(&this->actor)) { + if (gSaveContext.save.entrance != ENTRANCE(IKANA_CANYON, 10)) { Actor_Kill(&this->actor); - } else { - this->sharpCsNum = SHARP_CS_ENCOUNTER_FIRST; - this->inCutscene = true; - EnPoComposer_SetupStartedCutscene(this); + return; } + this->sharpCsNum = SHARP_CS_ENCOUNTER_FIRST; + this->inCutscene = true; + EnPoComposer_SetupStartedCutscene(this); } else { s32 i; - s16 csIndex = this->actor.csId; + s16 csId = this->actor.csId; - if (gSaveContext.save.saveInfo.weekEventReg[14] & 4) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_04)) { Actor_Kill(&this->actor); return; } - for (i = 0; i < ARRAY_COUNT(this->csIndices); i++) { - if (csIndex == CS_ID_NONE) { + for (i = 0; i < ARRAY_COUNT(this->csIds); i++) { + if (csId == CS_ID_NONE) { break; } - this->csIndices[i] = csIndex; - csIndex = CutsceneManager_GetAdditionalCsId(csIndex); + this->csIds[i] = csId; + csId = CutsceneManager_GetAdditionalCsId(csId); } - if (gSaveContext.save.saveInfo.weekEventReg[14] & 2) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_14_02)) { this->sharpCsNum = SHARP_CS_ENCOUNTER_OTHER; } else { this->sharpCsNum = SHARP_CS_ENCOUNTER_FIRST; @@ -264,14 +263,14 @@ void EnPoComposer_SetupStartCutscene(EnPoComposer* this) { } void EnPoComposer_StartCutscene(EnPoComposer* this, PlayState* play) { - if (CutsceneManager_IsNext(this->csIndices[this->sharpCsNum])) { - CutsceneManager_Start(this->csIndices[this->sharpCsNum], &this->actor); + if (CutsceneManager_IsNext(this->csIds[this->sharpCsNum])) { + CutsceneManager_Start(this->csIds[this->sharpCsNum], &this->actor); EnPoComposer_SetupStartedCutscene(this); } else { if (CutsceneManager_GetCurrentCsId() == CS_ID_GLOBAL_TALK) { CutsceneManager_Stop(CS_ID_GLOBAL_TALK); } - CutsceneManager_Queue(this->csIndices[this->sharpCsNum]); + CutsceneManager_Queue(this->csIds[this->sharpCsNum]); } } @@ -323,6 +322,9 @@ void EnPoComposer_PlayCurse(EnPoComposer* this, PlayState* play) { this->sharpCsNum = SHARP_CS_SONG_HEALING; EnPoComposer_SetupStartCutscene(this); break; + + default: + break; } } @@ -370,7 +372,7 @@ void EnPoComposer_SetupRaiseArms(EnPoComposer* this) { } void EnPoComposer_RaiseArms(EnPoComposer* this, PlayState* play) { - if (this->csActionTimer == 0 && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + if ((this->csActionTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->csActionTimer++; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_ARMS_RAISED); } @@ -383,7 +385,7 @@ void EnPoComposer_SetupLowerArms(EnPoComposer* this) { } void EnPoComposer_LowerArms(EnPoComposer* this, PlayState* play) { - if (this->csActionTimer == 0 && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + if ((this->csActionTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->csActionTimer++; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_IDLE_FACING_DOWN); } @@ -396,7 +398,7 @@ void EnPoComposer_SetupCutscenePlayCurse(EnPoComposer* this) { } void EnPoComposer_CutscenePlayCurse(EnPoComposer* this, PlayState* play) { - if (this->csActionTimer == 0 && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + if ((this->csActionTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->csActionTimer++; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_PLAYING_CURSE); } @@ -415,7 +417,7 @@ void EnPoComposer_Roll(EnPoComposer* this, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EN_SHARP_REACTION); Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_ROLLING); } - } else if (Animation_OnFrame(&this->skelAnime, 1.0f) && this->lightColor.a >= 33) { + } else if (Animation_OnFrame(&this->skelAnime, 1.0f) && (this->lightColor.a >= 33)) { if (this->csActionTimer == 1) { Actor_PlaySfx(&this->actor, NA_SE_EN_LAST3_DEAD_WIND2_OLD); this->csActionTimer = 2; @@ -427,12 +429,12 @@ void EnPoComposer_Roll(EnPoComposer* this, PlayState* play) { } void EnPoComposer_SharpCutsceneDone(EnPoComposer* this) { - gSaveContext.save.saveInfo.weekEventReg[14] |= 4; + SET_WEEKEVENTREG(WEEKEVENTREG_14_04); Actor_Kill(&this->actor); } s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { - u16 cueType = PO_COMPOSER_IS_FLAT(&this->actor) ? 0x1E2 : 0x1E1; + u16 cueType = PO_COMPOSER_IS_FLAT(&this->actor) ? CS_CMD_ACTOR_CUE_482 : CS_CMD_ACTOR_CUE_481; s32 cueChannel; if (!this->inCutscene) { @@ -446,50 +448,53 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { this->lastCsAction = play->csCtx.actorCues[cueChannel]->id; switch (play->csCtx.actorCues[cueChannel]->id) { - case COMPOSER_CS_ACTION_IDLE: // loop idle + case COMPOSER_CUEID_IDLE: // loop idle EnPoComposer_SetupIdleStill(this); break; - case COMPOSER_CS_ACTION_APPEAR_SPIN: // appear/disappear -> loop idle + case COMPOSER_CUEID_APPEAR_SPIN: // appear/disappear -> loop idle EnPoComposer_SetupAppear(this); break; - case COMPOSER_CS_ACTION_IDLE2: // loop sharp idle + case COMPOSER_CUEID_IDLE2: // loop sharp idle EnPoComposer_SetupIdle(this); break; - case COMPOSER_CS_ACTION_RAISE_ARMS: // raise arms -> loop arms raised + case COMPOSER_CUEID_RAISE_ARMS: // raise arms -> loop arms raised EnPoComposer_SetupRaiseArms(this); break; - case COMPOSER_CS_ACTION_LOWER_ARMS: // lower arms -> loop idle + case COMPOSER_CUEID_LOWER_ARMS: // lower arms -> loop idle EnPoComposer_SetupLowerArms(this); break; - case COMPOSER_CS_ACTION_PLAY_CURSE: // begin playing -> loop playing + case COMPOSER_CUEID_PLAY_CURSE: // begin playing -> loop playing EnPoComposer_SetupCutscenePlayCurse(this); break; - case COMPOSER_CS_ACTION_ROLL: // begin rolling -> loop rolling + case COMPOSER_CUEID_ROLL: // begin rolling -> loop rolling EnPoComposer_SetupRoll(this); break; - case COMPOSER_CS_ACTION_APPEAR: // appear + case COMPOSER_CUEID_APPEAR: // appear this->visible = true; break; - case COMPOSER_CS_ACTION_DISAPPEAR: // disappear + case COMPOSER_CUEID_DISAPPEAR: // disappear this->visible = false; Actor_PlaySfx(&this->actor, NA_SE_EN_PO_DISAPPEAR); break; - case COMPOSER_CS_ACTION_DONE: - if (cueType == 0x1E1) { + case COMPOSER_CUEID_DONE: + if (cueType == CS_CMD_ACTOR_CUE_481) { EnPoComposer_SharpCutsceneDone(this); } else { Actor_Kill(&this->actor); } break; + + default: + break; } } @@ -501,7 +506,7 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { EnPoComposer_StepLightAlpha(this); - if (this->sharpCsNum == SHARP_CS_SONG_STORMS && play->csCtx.curFrame == 204) { + if ((this->sharpCsNum == SHARP_CS_SONG_STORMS) && (play->csCtx.curFrame == 204)) { Audio_PlaySfx(NA_SE_SY_DIZZY_EFFECT); } @@ -516,14 +521,14 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { if (PO_COMPOSER_IS_FLAT(&this->actor)) { EnPoComposer_SetupStartedCutscene(this); - } else if (this->actor.params & 0x4000) { + } else if (PO_COMPOSER_4000(&this->actor)) { EnPoComposer_SetupStartedCutscene(this); } else { this->inCutscene = false; if (this->sharpCsNum < SHARP_CS_SONG_STORMS) { - if (!(gSaveContext.save.saveInfo.weekEventReg[14] & 2)) { - gSaveContext.save.saveInfo.weekEventReg[14] |= 2; + if (!(CHECK_WEEKEVENTREG(WEEKEVENTREG_14_02))) { + SET_WEEKEVENTREG(WEEKEVENTREG_14_02); } EnPoComposer_SetupPlayCurse(this); } else { @@ -532,22 +537,22 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { } } - this->lastCsAction = COMPOSER_CS_ACTION_NONE; + this->lastCsAction = COMPOSER_CUEID_NONE; return false; } void EnPoComposer_StepLightAlpha(EnPoComposer* this) { - if (this->visible == true && this->lightColor.a != 255) { + if ((this->visible == true) && (this->lightColor.a != 255)) { if (this->lightColor.a > 247) { this->lightColor.a = 255; } else { - this->lightColor.a = this->lightColor.a + 7; + this->lightColor.a += 7; } - } else if (!this->visible && this->lightColor.a != 0) { + } else if (!this->visible && (this->lightColor.a != 0)) { if (this->lightColor.a < 8) { this->lightColor.a = 0; } else { - this->lightColor.a = this->lightColor.a - 7; + this->lightColor.a -= 7; } } } @@ -571,11 +576,12 @@ void EnPoComposer_StepLightColor(EnPoComposer* this) { } void EnPoComposer_UpdateEnvColor(EnPoComposer* this) { - if (this->actionFunc == EnPoComposer_Appear && this->skelAnime.curFrame < 12.0f) { + if ((this->actionFunc == EnPoComposer_Appear) && (this->skelAnime.curFrame < 12.0f)) { this->envColor.r = this->envColor.g = this->envColor.b = 55.0f + this->skelAnime.curFrame * 16.66f; this->envColor.a = this->skelAnime.curFrame * 16.666666f; } else { f32 rand = Rand_ZeroOne(); + this->envColor.r = 225 + (s32)(rand * 30.0f); this->envColor.g = 155 + (s32)(rand * 100.0f); this->envColor.b = 95 + (s32)(rand * 160.0f); @@ -610,10 +616,10 @@ s32 EnPoComposer_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, V Gfx** gfx) { EnPoComposer* this = THIS; - if (this->lightColor.a == 0 || limbIndex == PO_COMPOSER_LIMB_LANTERN) { // lantern + if ((this->lightColor.a == 0) || (limbIndex == PO_COMPOSER_LIMB_LANTERN)) { *dList = NULL; - } else if (PO_COMPOSER_IS_FLAT(&this->actor) && limbIndex == PO_COMPOSER_LIMB_HEAD) { // head - *dList = gPoeComposerFlatHeadDL; // flat head + } else if (PO_COMPOSER_IS_FLAT(&this->actor) && (limbIndex == PO_COMPOSER_LIMB_HEAD)) { + *dList = gPoeComposerFlatHeadDL; } if (limbIndex == 19) { @@ -659,7 +665,7 @@ void EnPoComposer_Draw(Actor* thisx, PlayState* play) { // Draw skeleton - if (this->lightColor.a == 255 || this->lightColor.a == 0) { + if ((this->lightColor.a == 255) || (this->lightColor.a == 0)) { Gfx_SetupDL25_Opa(play->state.gfxCtx); gSPSegment(POLY_OPA_DISP++, 0x08, diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h index af8c0ecb1..c067b8d5e 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h @@ -5,20 +5,20 @@ #include "objects/object_po_composer/object_po_composer.h" #define PO_COMPOSER_IS_FLAT(actor) ((actor)->params & 0x8000) +#define PO_COMPOSER_4000(actor) ((actor)->params & 0x4000) typedef enum { - /* 1 */ COMPOSER_CS_ACTION_IDLE = 1, - /* 2 */ COMPOSER_CS_ACTION_APPEAR_SPIN, - /* 3 */ COMPOSER_CS_ACTION_IDLE2, - /* 4 */ COMPOSER_CS_ACTION_RAISE_ARMS, - /* 5 */ COMPOSER_CS_ACTION_LOWER_ARMS, - /* 6 */ COMPOSER_CS_ACTION_PLAY_CURSE, - /* 7 */ COMPOSER_CS_ACTION_ROLL, - /* 8 */ COMPOSER_CS_ACTION_APPEAR, - /* 9 */ COMPOSER_CS_ACTION_DISAPPEAR, - /* 10 */ COMPOSER_CS_ACTION_DONE, - - /* 99 */ COMPOSER_CS_ACTION_NONE = 99 + /* 1 */ COMPOSER_CUEID_IDLE = 1, + /* 2 */ COMPOSER_CUEID_APPEAR_SPIN, + /* 3 */ COMPOSER_CUEID_IDLE2, + /* 4 */ COMPOSER_CUEID_RAISE_ARMS, + /* 5 */ COMPOSER_CUEID_LOWER_ARMS, + /* 6 */ COMPOSER_CUEID_PLAY_CURSE, + /* 7 */ COMPOSER_CUEID_ROLL, + /* 8 */ COMPOSER_CUEID_APPEAR, + /* 9 */ COMPOSER_CUEID_DISAPPEAR, + /* 10 */ COMPOSER_CUEID_DONE, + /* 99 */ COMPOSER_CUEID_NONE = 99 } EnPoComposerCutsceneAction; typedef enum { @@ -42,11 +42,11 @@ typedef struct EnPoComposer { /* 0x238 */ MtxF lanternMtxF; /* 0x278 */ LightNode* lightNode; /* 0x27C */ LightInfo lightInfo; - /* 0x28A */ char unk_28A[0x6]; + /* 0x28A */ UNK_TYPE1 unk_28A[0x6]; /* 0x290 */ s32 sharpCsNum; /* 0x294 */ Vec3s jointTable[PO_COMPOSER_LIMB_MAX]; /* 0x2DC */ Vec3s morphTable[PO_COMPOSER_LIMB_MAX]; - /* 0x324 */ s16 csIndices[4]; + /* 0x324 */ s16 csIds[4]; /* 0x32C */ s16 actionTimer; /* 0x32E */ s16 csActionTimer; /* 0x330 */ s16 inCutscene; From 630212af0d2a883f131e3268430aec810f5da557 Mon Sep 17 00:00:00 2001 From: Thar0 <17233964+Thar0@users.noreply.github.com> Date: Wed, 4 Oct 2023 00:30:10 +0100 Subject: [PATCH 4/6] Further review changes --- assets/xml/objects/object_po_composer.xml | 2 +- .../ovl_En_Po_Composer/z_en_po_composer.c | 50 +++++++++---------- .../ovl_En_Po_Composer/z_en_po_composer.h | 13 ++--- 3 files changed, 33 insertions(+), 32 deletions(-) diff --git a/assets/xml/objects/object_po_composer.xml b/assets/xml/objects/object_po_composer.xml index 67036066f..4b5ca10b8 100644 --- a/assets/xml/objects/object_po_composer.xml +++ b/assets/xml/objects/object_po_composer.xml @@ -58,6 +58,6 @@ - + diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c index daa4f6338..e223c4504 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c @@ -197,7 +197,7 @@ void EnPoComposer_Init(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_TARGETABLE; this->lightColor = sLightColorInit; this->envColor = sEnvColorInit; - this->lastCsAction = COMPOSER_CUEID_NONE; + this->cueId = COMPOSER_CUEID_NONE; if (PO_COMPOSER_IS_FLAT(&this->actor)) { this->sharpCsNum = 0; @@ -365,65 +365,65 @@ void EnPoComposer_Idle(EnPoComposer* this, PlayState* play) { } void EnPoComposer_SetupRaiseArms(EnPoComposer* this) { - this->csActionTimer = 0; + this->csCueTimer = 0; Actor_PlaySfx(&this->actor, NA_SE_EN_SHARP_REACTION); Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_RAISE_ARMS); this->actionFunc = EnPoComposer_RaiseArms; } void EnPoComposer_RaiseArms(EnPoComposer* this, PlayState* play) { - if ((this->csActionTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - this->csActionTimer++; + if ((this->csCueTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + this->csCueTimer++; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_ARMS_RAISED); } } void EnPoComposer_SetupLowerArms(EnPoComposer* this) { - this->csActionTimer = 0; + this->csCueTimer = 0; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_LOWER_ARMS); this->actionFunc = EnPoComposer_LowerArms; } void EnPoComposer_LowerArms(EnPoComposer* this, PlayState* play) { - if ((this->csActionTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - this->csActionTimer++; + if ((this->csCueTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + this->csCueTimer++; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_IDLE_FACING_DOWN); } } void EnPoComposer_SetupCutscenePlayCurse(EnPoComposer* this) { - this->csActionTimer = 0; + this->csCueTimer = 0; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_BEGIN_PLAYING_CURSE); this->actionFunc = EnPoComposer_CutscenePlayCurse; } void EnPoComposer_CutscenePlayCurse(EnPoComposer* this, PlayState* play) { - if ((this->csActionTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - this->csActionTimer++; + if ((this->csCueTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + this->csCueTimer++; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_PLAYING_CURSE); } } void EnPoComposer_SetupRoll(EnPoComposer* this) { - this->csActionTimer = 0; + this->csCueTimer = 0; Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_BEGIN_ROLLING); this->actionFunc = EnPoComposer_Roll; } void EnPoComposer_Roll(EnPoComposer* this, PlayState* play) { - if (this->csActionTimer == 0) { + if (this->csCueTimer == 0) { if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { - this->csActionTimer++; + this->csCueTimer++; Actor_PlaySfx(&this->actor, NA_SE_EN_SHARP_REACTION); Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_ROLLING); } - } else if (Animation_OnFrame(&this->skelAnime, 1.0f) && (this->lightColor.a >= 33)) { - if (this->csActionTimer == 1) { + } else if (Animation_OnFrame(&this->skelAnime, 1.0f) && (this->lightColor.a > 32)) { + if (this->csCueTimer == 1) { Actor_PlaySfx(&this->actor, NA_SE_EN_LAST3_DEAD_WIND2_OLD); - this->csActionTimer = 2; + this->csCueTimer = 2; } else { Actor_PlaySfx(&this->actor, NA_SE_EN_LAST3_DEAD_WIND3_OLD); - this->csActionTimer = 1; + this->csCueTimer = 1; } } } @@ -444,8 +444,8 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { if (Cutscene_IsCueInChannel(play, cueType)) { cueChannel = Cutscene_GetCueChannel(play, cueType); - if (this->lastCsAction != play->csCtx.actorCues[cueChannel]->id) { - this->lastCsAction = play->csCtx.actorCues[cueChannel]->id; + if (this->cueId != play->csCtx.actorCues[cueChannel]->id) { + this->cueId = play->csCtx.actorCues[cueChannel]->id; switch (play->csCtx.actorCues[cueChannel]->id) { case COMPOSER_CUEID_IDLE: // loop idle @@ -516,8 +516,8 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { return true; } - if (this->actionFunc != EnPoComposer_StartedCutscene && this->actionFunc != EnPoComposer_StartCutscene && - this->actionFunc != EnPoComposer_PlayCurse && play->csCtx.state == CS_STATE_IDLE) { + if ((this->actionFunc != EnPoComposer_StartedCutscene) && (this->actionFunc != EnPoComposer_StartCutscene) && + (this->actionFunc != EnPoComposer_PlayCurse) && (play->csCtx.state == CS_STATE_IDLE)) { if (PO_COMPOSER_IS_FLAT(&this->actor)) { EnPoComposer_SetupStartedCutscene(this); @@ -527,7 +527,7 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { this->inCutscene = false; if (this->sharpCsNum < SHARP_CS_SONG_STORMS) { - if (!(CHECK_WEEKEVENTREG(WEEKEVENTREG_14_02))) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_14_02)) { SET_WEEKEVENTREG(WEEKEVENTREG_14_02); } EnPoComposer_SetupPlayCurse(this); @@ -537,7 +537,7 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { } } - this->lastCsAction = COMPOSER_CUEID_NONE; + this->cueId = COMPOSER_CUEID_NONE; return false; } @@ -628,7 +628,7 @@ s32 EnPoComposer_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, V gDPSetEnvColor((*gfx)++, this->lightColor.r, this->lightColor.g, this->lightColor.b, this->lightColor.a); } - return 0; + return false; } void EnPoComposer_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) { @@ -739,7 +739,7 @@ void EnPoComposer_Draw(Actor* thisx, PlayState* play) { lightPos.z += (s16)lightOffset.z; Lights_PointGlowSetInfo(&this->lightInfo, lightPos.x, lightPos.y, lightPos.z, this->envColor.r, this->envColor.g, - this->envColor.b, this->envColor.a * 0.78431374f); + this->envColor.b, this->envColor.a * (200.0f / 255.0f)); CLOSE_DISPS(play->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h index c067b8d5e..535a63b3b 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h @@ -19,14 +19,15 @@ typedef enum { /* 9 */ COMPOSER_CUEID_DISAPPEAR, /* 10 */ COMPOSER_CUEID_DONE, /* 99 */ COMPOSER_CUEID_NONE = 99 -} EnPoComposerCutsceneAction; +} EnPoComposerCueId; typedef enum { /* 0 */ SHARP_CS_ENCOUNTER_FIRST, /* 1 */ SHARP_CS_ENCOUNTER_OTHER, /* 2 */ SHARP_CS_SONG_HEALING, - /* 3 */ SHARP_CS_SONG_STORMS -} SharpCsId; + /* 3 */ SHARP_CS_SONG_STORMS, + /* 4 */ SHARP_CS_MAX +} SharpCsIdIndex; struct EnPoComposer; @@ -46,12 +47,12 @@ typedef struct EnPoComposer { /* 0x290 */ s32 sharpCsNum; /* 0x294 */ Vec3s jointTable[PO_COMPOSER_LIMB_MAX]; /* 0x2DC */ Vec3s morphTable[PO_COMPOSER_LIMB_MAX]; - /* 0x324 */ s16 csIds[4]; + /* 0x324 */ s16 csIds[SHARP_CS_MAX]; /* 0x32C */ s16 actionTimer; - /* 0x32E */ s16 csActionTimer; + /* 0x32E */ s16 csCueTimer; /* 0x330 */ s16 inCutscene; /* 0x332 */ s16 visible; - /* 0x334 */ u16 lastCsAction; + /* 0x334 */ u16 cueId; /* 0x336 */ Color_RGBA8 lightColor; /* 0x33A */ Color_RGBA8 envColor; } EnPoComposer; // size = 0x340 From 7ed2f171857fc5b830963ccc4ba11641b4b6d28b Mon Sep 17 00:00:00 2001 From: Thar0 <17233964+Thar0@users.noreply.github.com> Date: Wed, 4 Oct 2023 03:39:48 +0100 Subject: [PATCH 5/6] Improve EnPoComposer_UpdateEnvColor --- src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c index e223c4504..3ea6559f7 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c @@ -577,8 +577,9 @@ void EnPoComposer_StepLightColor(EnPoComposer* this) { void EnPoComposer_UpdateEnvColor(EnPoComposer* this) { if ((this->actionFunc == EnPoComposer_Appear) && (this->skelAnime.curFrame < 12.0f)) { + // Step rgb from 55 to 255 and alpha from 0 to 200 over the first 12 frames of the appear anim this->envColor.r = this->envColor.g = this->envColor.b = 55.0f + this->skelAnime.curFrame * 16.66f; - this->envColor.a = this->skelAnime.curFrame * 16.666666f; + this->envColor.a = this->skelAnime.curFrame * (200.0f / 12.0f); } else { f32 rand = Rand_ZeroOne(); From 974c9a6aad5d2863f78eab0214aae2dd6737ea9c Mon Sep 17 00:00:00 2001 From: Thar0 <17233964+Thar0@users.noreply.github.com> Date: Thu, 5 Oct 2023 18:06:00 +0100 Subject: [PATCH 6/6] PO_COMPOSER -> POE_COMPOSER, tweak animation names --- assets/xml/objects/object_po_composer.xml | 37 +++--- .../ovl_En_Po_Composer/z_en_po_composer.c | 116 +++++++++--------- .../ovl_En_Po_Composer/z_en_po_composer.h | 30 ++--- 3 files changed, 92 insertions(+), 91 deletions(-) diff --git a/assets/xml/objects/object_po_composer.xml b/assets/xml/objects/object_po_composer.xml index 4b5ca10b8..4ac60c00b 100644 --- a/assets/xml/objects/object_po_composer.xml +++ b/assets/xml/objects/object_po_composer.xml @@ -1,21 +1,22 @@  + - - + + - - - + + + - + @@ -45,19 +46,19 @@ - - - - - - - - - - - + + + + + + + + + + + - + diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c index 3ea6559f7..b8a4089e8 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.c @@ -74,7 +74,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = { BUMP_NONE, OCELEM_ON, }, - { PO_COMPOSER_LIMB_LANTERN, { { 0, -1500, 0 }, 10 }, 100 }, + { POE_COMPOSER_LIMB_LANTERN, { { 0, -1500, 0 }, 10 }, 100 }, }, }; @@ -129,34 +129,34 @@ static DamageTable sDamageTable = { }; typedef enum { - /* 0 */ PO_COMPOSER_ANIM_IDLE_STILL, - /* 1 */ PO_COMPOSER_ANIM_APPEAR_DISAPPEAR, - /* 2 */ PO_COMPOSER_ANIM_IDLE, - /* 3 */ PO_COMPOSER_ANIM_RAISE_ARMS, - /* 4 */ PO_COMPOSER_ANIM_ARMS_RAISED, - /* 5 */ PO_COMPOSER_ANIM_LOWER_ARMS, - /* 6 */ PO_COMPOSER_ANIM_IDLE_FACING_DOWN, - /* 7 */ PO_COMPOSER_ANIM_BEGIN_PLAYING_CURSE, - /* 8 */ PO_COMPOSER_ANIM_PLAYING_CURSE, - /* 9 */ PO_COMPOSER_ANIM_BEGIN_ROLLING, - /* 10 */ PO_COMPOSER_ANIM_ROLLING, - /* 11 */ PO_COMPOSER_ANIM_FLEE, - /* 12 */ PO_COMPOSER_ANIM_ATTACK, - /* 13 */ PO_COMPOSER_ANIM_MAX + /* 0 */ POE_COMPOSER_ANIM_STILL, + /* 1 */ POE_COMPOSER_ANIM_APPEAR_DISAPPEAR, + /* 2 */ POE_COMPOSER_ANIM_IDLE, + /* 3 */ POE_COMPOSER_ANIM_RAISE_ARMS, + /* 4 */ POE_COMPOSER_ANIM_ARMS_RAISED, + /* 5 */ POE_COMPOSER_ANIM_LOWER_ARMS, + /* 6 */ POE_COMPOSER_ANIM_LOOKING_DOWN, + /* 7 */ POE_COMPOSER_ANIM_BEGIN_PLAYING_CURSE, + /* 8 */ POE_COMPOSER_ANIM_PLAYING_CURSE, + /* 9 */ POE_COMPOSER_ANIM_BEGIN_ROLLING, + /* 10 */ POE_COMPOSER_ANIM_ROLLING, + /* 11 */ POE_COMPOSER_ANIM_FLEE, + /* 12 */ POE_COMPOSER_ANIM_ATTACK, + /* 13 */ POE_COMPOSER_ANIM_MAX } EnPoComposerAnim; -static AnimationInfo sAnimationInfo[PO_COMPOSER_ANIM_MAX] = { - /* 0 */ { &gPoeComposerIdleStillAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, +static AnimationInfo sAnimationInfo[POE_COMPOSER_ANIM_MAX] = { + /* 0 */ { &gPoeComposerStillAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 1 */ { &gPoeComposerAppearDisappearAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, /* 2 */ { &gPoeComposerIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 3 */ { &gPoeComposerRaiseArmsAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 4 */ { &gPoeComposerArmsRaisedAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 5 */ { &gPoeComposerLowerArmsAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 6 */ { &gPoeComposerIdleLookingDownAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 7 */ { &gPoeComposerBeginPlayingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 8 */ { &gPoeComposerPlayingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 9 */ { &gPoeComposerBeginRollingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, - /* 10 */ { &gPoeComposerRollingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 6 */ { &gPoeComposerLookingDownAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 7 */ { &gPoeComposerBeginPlayAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 8 */ { &gPoeComposerPlayAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 9 */ { &gPoeComposerBeginRollAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, + /* 10 */ { &gPoeComposerRollAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 11 */ { &gPoeComposerFleeAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -4.0f }, /* 12 */ { &gPoeComposerAttackAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, }; @@ -185,7 +185,7 @@ void EnPoComposer_Init(Actor* thisx, PlayState* play) { Actor_ProcessInitChain(&this->actor, sInitChain); ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f); SkelAnime_InitFlex(play, &this->skelAnime, &gPoeComposerSkel, &gPoeComposerIdleAnim, this->jointTable, - this->morphTable, PO_COMPOSER_LIMB_MAX); + this->morphTable, POE_COMPOSER_LIMB_MAX); Collider_InitJntSph(play, &this->lanternCollider); Collider_SetJntSph(play, &this->lanternCollider, &this->actor, &sJntSphInit, this->lanternColliderElements); Collider_InitCylinder(play, &this->bodyCollider); @@ -197,13 +197,13 @@ void EnPoComposer_Init(Actor* thisx, PlayState* play) { this->actor.flags &= ~ACTOR_FLAG_TARGETABLE; this->lightColor = sLightColorInit; this->envColor = sEnvColorInit; - this->cueId = COMPOSER_CUEID_NONE; + this->cueId = POE_COMPOSER_CUEID_NONE; - if (PO_COMPOSER_IS_FLAT(&this->actor)) { + if (POE_COMPOSER_IS_FLAT(&this->actor)) { this->sharpCsNum = 0; this->inCutscene = true; EnPoComposer_SetupStartedCutscene(this); - } else if (PO_COMPOSER_4000(&this->actor)) { + } else if (POE_COMPOSER_4000(&this->actor)) { if (gSaveContext.save.entrance != ENTRANCE(IKANA_CANYON, 10)) { Actor_Kill(&this->actor); return; @@ -247,7 +247,7 @@ void EnPoComposer_Destroy(Actor* thisx, PlayState* play) { } void EnPoComposer_SetupAwaitPlayer(EnPoComposer* this) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_IDLE_STILL); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_STILL); this->actionFunc = EnPoComposer_AwaitPlayer; } @@ -284,7 +284,7 @@ void EnPoComposer_StartedCutscene(EnPoComposer* this, PlayState* play) { void EnPoComposer_SetupPlayCurse(EnPoComposer* this) { this->actionTimer = 0; this->actor.flags |= ACTOR_FLAG_TARGETABLE; - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_PLAYING_CURSE); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_PLAYING_CURSE); this->actionFunc = EnPoComposer_PlayCurse; } @@ -310,7 +310,7 @@ void EnPoComposer_PlayCurse(EnPoComposer* this, PlayState* play) { sPlayerIsPlayingOcarina = false; } - // Song check, check if player just played song of storms or song of healing to react to + // Song check, check if player just played song of storms or song of healing if (play->msgCtx.ocarinaMode == 3) { switch (play->msgCtx.lastPlayedSong) { case OCARINA_SONG_STORMS: @@ -333,7 +333,7 @@ void EnPoComposer_PlayCurse(EnPoComposer* this, PlayState* play) { } void EnPoComposer_SetupIdleStill(EnPoComposer* this) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_IDLE_STILL); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_STILL); this->actionFunc = EnPoComposer_IdleStill; } @@ -344,7 +344,7 @@ void EnPoComposer_SetupAppear(EnPoComposer* this) { this->actionTimer = 0; Actor_PlaySfx(&this->actor, NA_SE_EN_STALKIDS_APPEAR); Actor_PlaySfx(&this->actor, NA_SE_EN_PO_LAUGH); - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_APPEAR_DISAPPEAR); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_APPEAR_DISAPPEAR); this->actionFunc = EnPoComposer_Appear; } @@ -357,7 +357,7 @@ void EnPoComposer_Appear(EnPoComposer* this, PlayState* play) { } void EnPoComposer_SetupIdle(EnPoComposer* this) { - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_IDLE); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_IDLE); this->actionFunc = EnPoComposer_Idle; } @@ -367,46 +367,46 @@ void EnPoComposer_Idle(EnPoComposer* this, PlayState* play) { void EnPoComposer_SetupRaiseArms(EnPoComposer* this) { this->csCueTimer = 0; Actor_PlaySfx(&this->actor, NA_SE_EN_SHARP_REACTION); - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_RAISE_ARMS); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_RAISE_ARMS); this->actionFunc = EnPoComposer_RaiseArms; } void EnPoComposer_RaiseArms(EnPoComposer* this, PlayState* play) { if ((this->csCueTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->csCueTimer++; - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_ARMS_RAISED); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_ARMS_RAISED); } } void EnPoComposer_SetupLowerArms(EnPoComposer* this) { this->csCueTimer = 0; - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_LOWER_ARMS); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_LOWER_ARMS); this->actionFunc = EnPoComposer_LowerArms; } void EnPoComposer_LowerArms(EnPoComposer* this, PlayState* play) { if ((this->csCueTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->csCueTimer++; - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_IDLE_FACING_DOWN); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_LOOKING_DOWN); } } void EnPoComposer_SetupCutscenePlayCurse(EnPoComposer* this) { this->csCueTimer = 0; - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_BEGIN_PLAYING_CURSE); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_BEGIN_PLAYING_CURSE); this->actionFunc = EnPoComposer_CutscenePlayCurse; } void EnPoComposer_CutscenePlayCurse(EnPoComposer* this, PlayState* play) { if ((this->csCueTimer == 0) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->csCueTimer++; - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_PLAYING_CURSE); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_PLAYING_CURSE); } } void EnPoComposer_SetupRoll(EnPoComposer* this) { this->csCueTimer = 0; - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_BEGIN_ROLLING); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_BEGIN_ROLLING); this->actionFunc = EnPoComposer_Roll; } @@ -415,7 +415,7 @@ void EnPoComposer_Roll(EnPoComposer* this, PlayState* play) { if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { this->csCueTimer++; Actor_PlaySfx(&this->actor, NA_SE_EN_SHARP_REACTION); - Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, PO_COMPOSER_ANIM_ROLLING); + Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, POE_COMPOSER_ANIM_ROLLING); } } else if (Animation_OnFrame(&this->skelAnime, 1.0f) && (this->lightColor.a > 32)) { if (this->csCueTimer == 1) { @@ -434,7 +434,7 @@ void EnPoComposer_SharpCutsceneDone(EnPoComposer* this) { } s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { - u16 cueType = PO_COMPOSER_IS_FLAT(&this->actor) ? CS_CMD_ACTOR_CUE_482 : CS_CMD_ACTOR_CUE_481; + u16 cueType = POE_COMPOSER_IS_FLAT(&this->actor) ? CS_CMD_ACTOR_CUE_482 : CS_CMD_ACTOR_CUE_481; s32 cueChannel; if (!this->inCutscene) { @@ -448,44 +448,44 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { this->cueId = play->csCtx.actorCues[cueChannel]->id; switch (play->csCtx.actorCues[cueChannel]->id) { - case COMPOSER_CUEID_IDLE: // loop idle + case POE_COMPOSER_CUEID_IDLE: // loop idle EnPoComposer_SetupIdleStill(this); break; - case COMPOSER_CUEID_APPEAR_SPIN: // appear/disappear -> loop idle + case POE_COMPOSER_CUEID_APPEAR_SPIN: // appear/disappear -> loop idle EnPoComposer_SetupAppear(this); break; - case COMPOSER_CUEID_IDLE2: // loop sharp idle + case POE_COMPOSER_CUEID_IDLE2: // loop sharp idle EnPoComposer_SetupIdle(this); break; - case COMPOSER_CUEID_RAISE_ARMS: // raise arms -> loop arms raised + case POE_COMPOSER_CUEID_RAISE_ARMS: // raise arms -> loop arms raised EnPoComposer_SetupRaiseArms(this); break; - case COMPOSER_CUEID_LOWER_ARMS: // lower arms -> loop idle + case POE_COMPOSER_CUEID_LOWER_ARMS: // lower arms -> loop idle EnPoComposer_SetupLowerArms(this); break; - case COMPOSER_CUEID_PLAY_CURSE: // begin playing -> loop playing + case POE_COMPOSER_CUEID_PLAY_CURSE: // begin playing -> loop playing EnPoComposer_SetupCutscenePlayCurse(this); break; - case COMPOSER_CUEID_ROLL: // begin rolling -> loop rolling + case POE_COMPOSER_CUEID_ROLL: // begin rolling -> loop rolling EnPoComposer_SetupRoll(this); break; - case COMPOSER_CUEID_APPEAR: // appear + case POE_COMPOSER_CUEID_APPEAR: // appear this->visible = true; break; - case COMPOSER_CUEID_DISAPPEAR: // disappear + case POE_COMPOSER_CUEID_DISAPPEAR: // disappear this->visible = false; Actor_PlaySfx(&this->actor, NA_SE_EN_PO_DISAPPEAR); break; - case COMPOSER_CUEID_DONE: + case POE_COMPOSER_CUEID_DONE: if (cueType == CS_CMD_ACTOR_CUE_481) { EnPoComposer_SharpCutsceneDone(this); } else { @@ -519,9 +519,9 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { if ((this->actionFunc != EnPoComposer_StartedCutscene) && (this->actionFunc != EnPoComposer_StartCutscene) && (this->actionFunc != EnPoComposer_PlayCurse) && (play->csCtx.state == CS_STATE_IDLE)) { - if (PO_COMPOSER_IS_FLAT(&this->actor)) { + if (POE_COMPOSER_IS_FLAT(&this->actor)) { EnPoComposer_SetupStartedCutscene(this); - } else if (PO_COMPOSER_4000(&this->actor)) { + } else if (POE_COMPOSER_4000(&this->actor)) { EnPoComposer_SetupStartedCutscene(this); } else { this->inCutscene = false; @@ -537,7 +537,7 @@ s32 EnPoComposer_UpdateAction(EnPoComposer* this, PlayState* play) { } } - this->cueId = COMPOSER_CUEID_NONE; + this->cueId = POE_COMPOSER_CUEID_NONE; return false; } @@ -617,9 +617,9 @@ s32 EnPoComposer_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, V Gfx** gfx) { EnPoComposer* this = THIS; - if ((this->lightColor.a == 0) || (limbIndex == PO_COMPOSER_LIMB_LANTERN)) { + if ((this->lightColor.a == 0) || (limbIndex == POE_COMPOSER_LIMB_LANTERN)) { *dList = NULL; - } else if (PO_COMPOSER_IS_FLAT(&this->actor) && (limbIndex == PO_COMPOSER_LIMB_HEAD)) { + } else if (POE_COMPOSER_IS_FLAT(&this->actor) && (limbIndex == POE_COMPOSER_LIMB_HEAD)) { *dList = gPoeComposerFlatHeadDL; } @@ -636,7 +636,7 @@ void EnPoComposer_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3 EnPoComposer* this = THIS; Collider_UpdateSpheres(limbIndex, &this->lanternCollider); - if (limbIndex == PO_COMPOSER_LIMB_LANTERN) { + if (limbIndex == POE_COMPOSER_LIMB_LANTERN) { Matrix_Get(&this->lanternMtxF); } } @@ -656,7 +656,7 @@ void EnPoComposer_Draw(Actor* thisx, PlayState* play) { // Select colors - if (PO_COMPOSER_IS_FLAT(&this->actor)) { + if (POE_COMPOSER_IS_FLAT(&this->actor)) { clothingColor = &sFlatClothingColor1; var_t0 = &sFlatClothingColor2; } else { diff --git a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h index 535a63b3b..d64fc2430 100644 --- a/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h +++ b/src/overlays/actors/ovl_En_Po_Composer/z_en_po_composer.h @@ -4,21 +4,21 @@ #include "global.h" #include "objects/object_po_composer/object_po_composer.h" -#define PO_COMPOSER_IS_FLAT(actor) ((actor)->params & 0x8000) -#define PO_COMPOSER_4000(actor) ((actor)->params & 0x4000) +#define POE_COMPOSER_IS_FLAT(actor) ((actor)->params & 0x8000) +#define POE_COMPOSER_4000(actor) ((actor)->params & 0x4000) typedef enum { - /* 1 */ COMPOSER_CUEID_IDLE = 1, - /* 2 */ COMPOSER_CUEID_APPEAR_SPIN, - /* 3 */ COMPOSER_CUEID_IDLE2, - /* 4 */ COMPOSER_CUEID_RAISE_ARMS, - /* 5 */ COMPOSER_CUEID_LOWER_ARMS, - /* 6 */ COMPOSER_CUEID_PLAY_CURSE, - /* 7 */ COMPOSER_CUEID_ROLL, - /* 8 */ COMPOSER_CUEID_APPEAR, - /* 9 */ COMPOSER_CUEID_DISAPPEAR, - /* 10 */ COMPOSER_CUEID_DONE, - /* 99 */ COMPOSER_CUEID_NONE = 99 + /* 1 */ POE_COMPOSER_CUEID_IDLE = 1, + /* 2 */ POE_COMPOSER_CUEID_APPEAR_SPIN, + /* 3 */ POE_COMPOSER_CUEID_IDLE2, + /* 4 */ POE_COMPOSER_CUEID_RAISE_ARMS, + /* 5 */ POE_COMPOSER_CUEID_LOWER_ARMS, + /* 6 */ POE_COMPOSER_CUEID_PLAY_CURSE, + /* 7 */ POE_COMPOSER_CUEID_ROLL, + /* 8 */ POE_COMPOSER_CUEID_APPEAR, + /* 9 */ POE_COMPOSER_CUEID_DISAPPEAR, + /* 10 */ POE_COMPOSER_CUEID_DONE, + /* 99 */ POE_COMPOSER_CUEID_NONE = 99 } EnPoComposerCueId; typedef enum { @@ -45,8 +45,8 @@ typedef struct EnPoComposer { /* 0x27C */ LightInfo lightInfo; /* 0x28A */ UNK_TYPE1 unk_28A[0x6]; /* 0x290 */ s32 sharpCsNum; - /* 0x294 */ Vec3s jointTable[PO_COMPOSER_LIMB_MAX]; - /* 0x2DC */ Vec3s morphTable[PO_COMPOSER_LIMB_MAX]; + /* 0x294 */ Vec3s jointTable[POE_COMPOSER_LIMB_MAX]; + /* 0x2DC */ Vec3s morphTable[POE_COMPOSER_LIMB_MAX]; /* 0x324 */ s16 csIds[SHARP_CS_MAX]; /* 0x32C */ s16 actionTimer; /* 0x32E */ s16 csCueTimer;