diff options
| author | Tom Overton <tom-overton@users.noreply.github.com> | 2022-09-27 14:48:57 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-27 22:48:57 +0100 |
| commit | 91d4e29dfab60d4ced001cce7993d60b5f5c705b (patch) | |
| tree | 75bdc04995521282ce710300c527caf016aad9f0 | |
| parent | aa5498231886fc93ed3f78a61362e9266d0f955b (diff) | |
Document object_zos (Evan) (#1091)
* Name all but one DList
* Name keyboard textures
* Finish object
* Respond to Elliptic's review
* Respond to Anghelo's review
* Comments for animations in array
* Respond to Engineer's review
| -rw-r--r-- | assets/xml/objects/object_zos.xml | 145 | ||||
| -rw-r--r-- | src/overlays/actors/ovl_En_Zos/z_en_zos.c | 175 | ||||
| -rw-r--r-- | src/overlays/actors/ovl_En_Zos/z_en_zos.h | 11 | ||||
| -rw-r--r-- | tools/disasm/functions.txt | 2 | ||||
| -rw-r--r-- | tools/disasm/variables.txt | 2 |
5 files changed, 189 insertions, 146 deletions
diff --git a/assets/xml/objects/object_zos.xml b/assets/xml/objects/object_zos.xml index 016831ac5..a1364a842 100644 --- a/assets/xml/objects/object_zos.xml +++ b/assets/xml/objects/object_zos.xml @@ -1,69 +1,84 @@ <Root> + <!-- Assets for Evan, the pianist of The Indigo-Go's. --> <File Name="object_zos" Segment="6"> - <Animation Name="object_zos_Anim_001CFC" Offset="0x1CFC" /> - <Animation Name="object_zos_Anim_0048D4" Offset="0x48D4" /> - <Animation Name="object_zos_Anim_005E04" Offset="0x5E04" /> - <Animation Name="object_zos_Anim_007334" Offset="0x7334" /> - <Animation Name="object_zos_Anim_007C40" Offset="0x7C40" /> - <Animation Name="object_zos_Anim_008630" Offset="0x8630" /> - <Animation Name="object_zos_Anim_0090CC" Offset="0x90CC" /> - <Animation Name="object_zos_Anim_009830" Offset="0x9830" /> - <Animation Name="object_zos_Anim_00A164" Offset="0xA164" /> - <DList Name="object_zos_DL_00D2B0" Offset="0xD2B0" /> - <DList Name="object_zos_DL_00D3E0" Offset="0xD3E0" /> - <DList Name="object_zos_DL_00D658" Offset="0xD658" /> - <DList Name="object_zos_DL_00D7A8" Offset="0xD7A8" /> - <DList Name="object_zos_DL_00D900" Offset="0xD900" /> - <DList Name="object_zos_DL_00DA90" Offset="0xDA90" /> - <DList Name="object_zos_DL_00DB90" Offset="0xDB90" /> - <DList Name="object_zos_DL_00DCE8" Offset="0xDCE8" /> - <DList Name="object_zos_DL_00DE78" Offset="0xDE78" /> - <DList Name="object_zos_DL_00E328" Offset="0xE328" /> - <DList Name="object_zos_DL_00E400" Offset="0xE400" /> - <DList Name="object_zos_DL_00E4C8" Offset="0xE4C8" /> - <DList Name="object_zos_DL_00E700" Offset="0xE700" /> - <DList Name="object_zos_DL_00E8A0" Offset="0xE8A0" /> - <DList Name="object_zos_DL_00EA80" Offset="0xEA80" /> - <DList Name="object_zos_DL_00EC98" Offset="0xEC98" /> - <DList Name="object_zos_DL_00EE38" Offset="0xEE38" /> - <Texture Name="object_zos_TLUT_00F018" OutName="tlut_00F018" Format="rgba16" Width="16" Height="16" Offset="0xF018" /> - <Texture Name="object_zos_Tex_00F218" OutName="tex_00F218" Format="rgba16" Width="32" Height="32" Offset="0xF218" /> - <Texture Name="object_zos_Tex_00FA18" OutName="tex_00FA18" Format="ci8" Width="16" Height="16" Offset="0xFA18" /> - <Texture Name="object_zos_Tex_00FB18" OutName="tex_00FB18" Format="rgba16" Width="8" Height="8" Offset="0xFB18" /> - <Texture Name="object_zos_Tex_00FB98" OutName="tex_00FB98" Format="rgba16" Width="8" Height="8" Offset="0xFB98" /> - <Texture Name="object_zos_Tex_00FC18" OutName="tex_00FC18" Format="rgba16" Width="8" Height="8" Offset="0xFC18" /> - <Texture Name="object_zos_Tex_00FC98" OutName="tex_00FC98" Format="rgba16" Width="32" Height="32" Offset="0xFC98" /> - <Texture Name="object_zos_Tex_010498" OutName="tex_010498" Format="rgba16" Width="16" Height="32" Offset="0x10498" /> - <Texture Name="object_zos_Tex_010898" OutName="tex_010898" Format="rgba16" Width="8" Height="8" Offset="0x10898" /> - <Texture Name="object_zos_Tex_010918" OutName="tex_010918" Format="rgba16" Width="32" Height="32" Offset="0x10918" /> - <Texture Name="object_zos_Tex_011118" OutName="tex_011118" Format="rgba16" Width="32" Height="32" Offset="0x11118" /> - <Texture Name="object_zos_Tex_011918" OutName="tex_011918" Format="rgba16" Width="32" Height="32" Offset="0x11918" /> - <!-- <Blob Name="object_zos_Blob_012118" Size="0xF70" Offset="0x12118" /> --> - <DList Name="object_zos_DL_013088" Offset="0x13088" /> - <DList Name="object_zos_DL_0136E0" Offset="0x136E0" /> - <Texture Name="object_zos_Tex_013728" OutName="tex_013728" Format="rgba16" Width="32" Height="32" Offset="0x13728" /> - <Texture Name="object_zos_Tex_013F28" OutName="tex_013F28" Format="rgba16" Width="32" Height="32" Offset="0x13F28" /> - <Texture Name="object_zos_Tex_014728" OutName="tex_014728" Format="rgba16" Width="32" Height="32" Offset="0x14728" /> - <Texture Name="object_zos_Tex_014F28" OutName="tex_014F28" Format="rgba16" Width="16" Height="16" Offset="0x14F28" /> - <Limb Name="object_zos_Standardlimb_015128" Type="Standard" EnumName="OBJECT_ZOS_LIMB_01" Offset="0x15128" /> - <Limb Name="object_zos_Standardlimb_015134" Type="Standard" EnumName="OBJECT_ZOS_LIMB_02" Offset="0x15134" /> - <Limb Name="object_zos_Standardlimb_015140" Type="Standard" EnumName="OBJECT_ZOS_LIMB_03" Offset="0x15140" /> - <Limb Name="object_zos_Standardlimb_01514C" Type="Standard" EnumName="OBJECT_ZOS_LIMB_04" Offset="0x1514C" /> - <Limb Name="object_zos_Standardlimb_015158" Type="Standard" EnumName="OBJECT_ZOS_LIMB_05" Offset="0x15158" /> - <Limb Name="object_zos_Standardlimb_015164" Type="Standard" EnumName="OBJECT_ZOS_LIMB_06" Offset="0x15164" /> - <Limb Name="object_zos_Standardlimb_015170" Type="Standard" EnumName="OBJECT_ZOS_LIMB_07" Offset="0x15170" /> - <Limb Name="object_zos_Standardlimb_01517C" Type="Standard" EnumName="OBJECT_ZOS_LIMB_08" Offset="0x1517C" /> - <Limb Name="object_zos_Standardlimb_015188" Type="Standard" EnumName="OBJECT_ZOS_LIMB_09" Offset="0x15188" /> - <Limb Name="object_zos_Standardlimb_015194" Type="Standard" EnumName="OBJECT_ZOS_LIMB_0A" Offset="0x15194" /> - <Limb Name="object_zos_Standardlimb_0151A0" Type="Standard" EnumName="OBJECT_ZOS_LIMB_0B" Offset="0x151A0" /> - <Limb Name="object_zos_Standardlimb_0151AC" Type="Standard" EnumName="OBJECT_ZOS_LIMB_0C" Offset="0x151AC" /> - <Limb Name="object_zos_Standardlimb_0151B8" Type="Standard" EnumName="OBJECT_ZOS_LIMB_0D" Offset="0x151B8" /> - <Limb Name="object_zos_Standardlimb_0151C4" Type="Standard" EnumName="OBJECT_ZOS_LIMB_0E" Offset="0x151C4" /> - <Limb Name="object_zos_Standardlimb_0151D0" Type="Standard" EnumName="OBJECT_ZOS_LIMB_0F" Offset="0x151D0" /> - <Limb Name="object_zos_Standardlimb_0151DC" Type="Standard" EnumName="OBJECT_ZOS_LIMB_10" Offset="0x151DC" /> - <Limb Name="object_zos_Standardlimb_0151E8" Type="Standard" EnumName="OBJECT_ZOS_LIMB_11" Offset="0x151E8" /> - <Skeleton Name="object_zos_Skel_015238" Type="Flex" LimbType="Standard" LimbNone="OBJECT_ZOS_LIMB_NONE" LimbMax="OBJECT_ZOS_LIMB_MAX" EnumName="ObjectZosLimb" Offset="0x15238" /> - <Animation Name="object_zos_Anim_01621C" Offset="0x1621C" /> - <Animation Name="object_zos_Anim_016980" Offset="0x16980" /> + <!-- Evan Animations --> + <Animation Name="gEvanSlowPlayAnim" Offset="0x1CFC" /> <!-- Original name is "ev_ensou_loop" ("musical performance") --> + <Animation Name="gEvanInspiredAnim" Offset="0x48D4" /> <!-- Original name is "zK_furimuki" ("to turn around") --> + <Animation Name="gEvanPlayRightAnim" Offset="0x5E04" /> <!-- Original name is "zK_play01" --> + <Animation Name="gEvanPlayLeftAnim" Offset="0x7334" /> <!-- Original name is "zK_play02" --> + <Animation Name="gEeanTalkFootTapAnim" Offset="0x7C40" /> <!-- Original name is "zK_talk01" --> + <Animation Name="gEvanTalkLookDownAnim" Offset="0x8630" /> <!-- Original name is "zK_talk02" --> + <Animation Name="gEvanTalkArmsOutAnim" Offset="0x90CC" /> <!-- Original name is "zK_talk03" --> + <Animation Name="gEvanTalkHandsOnHipsAnim" Offset="0x9830" /> <!-- Original name is "zK_talk04" --> + <Animation Name="gEvanLeanOnKeyboardAnim" Offset="0xA164" /> <!-- Original name is "zK_wait01" --> + + <!-- Evan Limb DisplayLists --> + <DList Name="gEvanPelvisDL" Offset="0xD2B0" /> + <DList Name="gEvanTorsoDL" Offset="0xD3E0" /> + <DList Name="gEvanRightUpperArmDL" Offset="0xD658" /> + <DList Name="gEvanRightForearmDL" Offset="0xD7A8" /> + <DList Name="gEvanRightHandDL" Offset="0xD900" /> + <DList Name="gEvanLeftUpperArmDL" Offset="0xDA90" /> + <DList Name="gEvanLeftForearmDL" Offset="0xDB90" /> + <DList Name="gEvanLeftHandDL" Offset="0xDCE8" /> + <DList Name="gEvanHeadDL" Offset="0xDE78" /> + <DList Name="gEvanUpperHeadFinDL" Offset="0xE328" /> + <DList Name="gEvanLowerHeadFinDL" Offset="0xE400" /> + <DList Name="gEvanRightThighDL" Offset="0xE4C8" /> + <DList Name="gEvanRightShinDL" Offset="0xE700" /> + <DList Name="gEvanRightFootDL" Offset="0xE8A0" /> + <DList Name="gEvanLeftThighDL" Offset="0xEA80" /> + <DList Name="gEvanLeftShinDL" Offset="0xEC98" /> + <DList Name="gEvanLeftFootDL" Offset="0xEE38" /> + + <!-- Evan Textures --> + <Texture Name="gEvanFingersTLUT" OutName="evan_fingers_tlut" Format="rgba16" Width="16" Height="16" Offset="0xF018" /> + <Texture Name="gEvanSpottedSkinTex" OutName="evan_spotted_skin" Format="rgba16" Width="32" Height="32" Offset="0xF218" /> + <Texture Name="gEvanFingersTex" OutName="evan_fingers" Format="ci8" Width="16" Height="16" Offset="0xFA18" /> + <Texture Name="gEvanMouthEdgeTex" OutName="evan_mouth_edge" Format="rgba16" Width="8" Height="8" Offset="0xFB18" /> + <Texture Name="gEvanMouthAndFinsTex" OutName="evan_mouth_and_fins" Format="rgba16" Width="8" Height="8" Offset="0xFB98" /> + <Texture Name="gEvanSkinTex" OutName="evan_skin" Format="rgba16" Width="8" Height="8" Offset="0xFC18" /> + <Texture Name="gEvanHeadphoneClamTex" OutName="evan_headphone_clam" Format="rgba16" Width="32" Height="32" Offset="0xFC98" /> + <Texture Name="gEvanHeadphoneBoneTex" OutName="evan_headphone_bone" Format="rgba16" Width="16" Height="32" Offset="0x10498" /> + <Texture Name="gEvanArmbandTex" OutName="evan_armband" Format="rgba16" Width="8" Height="8" Offset="0x10898" /> + <Texture Name="gEvanEyeOpenTex" OutName="evan_eye_open" Format="rgba16" Width="32" Height="32" Offset="0x10918" /> + <Texture Name="gEvanEyeHalfTex" OutName="evan_eye_half" Format="rgba16" Width="32" Height="32" Offset="0x11118" /> + <Texture Name="gEvanEyeClosedTex" OutName="evan_eye_closed" Format="rgba16" Width="32" Height="32" Offset="0x11918" /> + + <!-- Evan's Keyboard DisplayLists --> + <DList Name="gEvanKeyboardDL" Offset="0x13088" /> <!-- Original name is "zK_gakki_model" --> + <DList Name="gEvanUnknownWhiteTriangleDL" Offset="0x136E0" /> <!-- The purpose of this is unknown. It cannot be seen in-game. --> + + <!-- Evan's Keyboard Textures --> + <Texture Name="gEvanKeyboardRibKeysTex" OutName="evan_keyboard_rib_keys" Format="rgba16" Width="32" Height="32" Offset="0x13728" /> + <Texture Name="gEvanKeyboardSkullTex" OutName="evan_keyboard_skull" Format="rgba16" Width="32" Height="32" Offset="0x13F28" /> + <Texture Name="gEvanKeyboardBoneTex" OutName="evan_keyboard_bone" Format="rgba16" Width="32" Height="32" Offset="0x14728" /> + <Texture Name="gEvanKeyboardOtherKeysTex" OutName="evan_keyboard_other_keys" Format="rgba16" Width="16" Height="16" Offset="0x14F28" /> + + <!-- Evan Limbs --> + <Limb Name="gEvanPelvisLimb" Type="Standard" EnumName="EVAN_LIMB_PELVIS" Offset="0x15128" /> + <Limb Name="gEvanLeftThighLimb" Type="Standard" EnumName="EVAN_LIMB_LEFT_THIGH" Offset="0x15134" /> + <Limb Name="gEvanLeftShinLimb" Type="Standard" EnumName="EVAN_LIMB_LEFT_SHIN" Offset="0x15140" /> + <Limb Name="gEvanLeftFootLimb" Type="Standard" EnumName="EVAN_LIMB_LEFT_FOOT" Offset="0x1514C" /> + <Limb Name="gEvanRightThighLimb" Type="Standard" EnumName="EVAN_LIMB_RIGHT_THIGH" Offset="0x15158" /> + <Limb Name="gEvanRightShinLimb" Type="Standard" EnumName="EVAN_LIMB_RIGHT_SHIN" Offset="0x15164" /> + <Limb Name="gEvanRightFootLimb" Type="Standard" EnumName="EVAN_LIMB_RIGHT_FOOT" Offset="0x15170" /> + <Limb Name="gEvanTorsoLimb" Type="Standard" EnumName="EVAN_LIMB_TORSO" Offset="0x1517C" /> + <Limb Name="gEvanHeadLimb" Type="Standard" EnumName="EVAN_LIMB_HEAD" Offset="0x15188" /> + <Limb Name="gEvanUpperHeadFinLimb" Type="Standard" EnumName="EVAN_LIMB_UPPER_HEAD_FIN" Offset="0x15194" /> + <Limb Name="gEvanLowerHeadFinLimb" Type="Standard" EnumName="EVAN_LIMB_LOWER_HEAD_FIN" Offset="0x151A0" /> + <Limb Name="gEvanLeftUpperArmLimb" Type="Standard" EnumName="EVAN_LIMB_LEFT_UPPER_ARM" Offset="0x151AC" /> + <Limb Name="gEvanLeftForearmLimb" Type="Standard" EnumName="EVAN_LIMB_LEFT_FOREARM" Offset="0x151B8" /> + <Limb Name="gEvanLeftHandLimb" Type="Standard" EnumName="EVAN_LIMB_LEFT_HAND" Offset="0x151C4" /> + <Limb Name="gEvanRightUpperArmLimb" Type="Standard" EnumName="EVAN_LIMB_RIGHT_UPPER_ARM" Offset="0x151D0" /> + <Limb Name="gEvanRightForearmLimb" Type="Standard" EnumName="EVAN_LIMB_RIGHT_FOREARM" Offset="0x151DC" /> + <Limb Name="gEvanRightHandLimb" Type="Standard" EnumName="EVAN_LIMB_RIGHT_HAND" Offset="0x151E8" /> + + <!-- Evan Skeleton --> + <Skeleton Name="gEvanSkel" Type="Flex" LimbType="Standard" LimbNone="EVAN_LIMB_NONE" LimbMax="EVAN_LIMB_MAX" EnumName="EvanLimb" Offset="0x15238" /> + + <!-- Evan Animations --> + <Animation Name="gEvanLeanOnKeyboardAndSighAnim" Offset="0x1621C" /> <!-- Original name is "zK_wait02" --> + <Animation Name="gEvanHandsOnHipsAnim" Offset="0x16980" /> <!-- Original name is "zK_wait03" --> </File> </Root> diff --git a/src/overlays/actors/ovl_En_Zos/z_en_zos.c b/src/overlays/actors/ovl_En_Zos/z_en_zos.c index 1419a7ecd..1b7be4e0b 100644 --- a/src/overlays/actors/ovl_En_Zos/z_en_zos.c +++ b/src/overlays/actors/ovl_En_Zos/z_en_zos.c @@ -5,7 +5,6 @@ */ #include "z_en_zos.h" -#include "objects/object_zos/object_zos.h" #define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_2000000) @@ -16,7 +15,7 @@ void EnZos_Destroy(Actor* thisx, PlayState* play); void EnZos_Update(Actor* thisx, PlayState* play); void EnZos_Draw(Actor* thisx, PlayState* play); -void func_80BBAE84(EnZos* this, s16 arg1, u8 arg2); +void EnZos_ChangeAnim(EnZos* this, s16 arg1, u8 arg2); void func_80BBB2C4(EnZos* this, PlayState* play); void func_80BBB354(EnZos* this, PlayState* play); void func_80BBB4CC(EnZos* this, PlayState* play); @@ -34,6 +33,23 @@ void func_80BBC24C(EnZos* this, PlayState* play); void func_80BBC298(EnZos* this, PlayState* play); void func_80BBC37C(EnZos* this, PlayState* play); +typedef enum { + /* 0 */ EN_ZOS_ANIM_LEAN_ON_KEYBOARD, + /* 1 */ EN_ZOS_ANIM_LEAN_ON_KEYBOARD_AND_SIGH, + /* 2 */ EN_ZOS_ANIM_HANDS_ON_HIPS, + /* 3 */ EN_ZOS_ANIM_TALK_FOOT_TAP, + /* 4 */ EN_ZOS_ANIM_TALK_LOOK_DOWN, + /* 5 */ EN_ZOS_ANIM_TALK_ARMS_OUT, + /* 6 */ EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, + /* 7 */ EN_ZOS_ANIM_PLAY_RIGHT, + /* 8 */ EN_ZOS_ANIM_PLAY_LEFT, + /* 9 */ EN_ZOS_ANIM_INSPIRED, + /* 10 */ EN_ZOS_ANIM_SLOW_PLAY, + /* 11 */ EN_ZOS_ANIM_PLAY_RIGHT_SHORTENED, + /* 12 */ EN_ZOS_ANIM_PLAY_LEFT_SHORTENED, + /* 13 */ EN_ZOS_ANIM_MAX +} EnZosAnimation; + const ActorInit En_Zos_InitVars = { ACTOR_EN_ZOS, ACTORCAT_NPC, @@ -73,14 +89,14 @@ void EnZos_Init(Actor* thisx, PlayState* play) { this->actionFunc = func_80BBBDE0; ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f); this->actor.colChkInfo.mass = MASS_IMMOVABLE; - SkelAnime_InitFlex(play, &this->skelAnime, &object_zos_Skel_015238, &object_zos_Anim_00A164, this->jointTable, - this->morphTable, 18); - Animation_PlayLoop(&this->skelAnime, &object_zos_Anim_00A164); + SkelAnime_InitFlex(play, &this->skelAnime, &gEvanSkel, &gEvanLeanOnKeyboardAnim, this->jointTable, this->morphTable, + EVAN_LIMB_MAX); + Animation_PlayLoop(&this->skelAnime, &gEvanLeanOnKeyboardAnim); Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); this->unk_2B6 = 0; this->actor.terminalVelocity = -4.0f; this->actor.gravity = -4.0f; - func_80BBAE84(this, 0, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_LEAN_ON_KEYBOARD, ANIMMODE_ONCE); switch (ENZOS_GET_F(&this->actor)) { case ENZOS_F_1: @@ -93,12 +109,12 @@ void EnZos_Init(Actor* thisx, PlayState* play) { } else { this->actionFunc = func_80BBC14C; } - func_80BBAE84(this, 0, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_LEAN_ON_KEYBOARD, ANIMMODE_ONCE); break; case ENZOS_F_2: this->actionFunc = func_80BBC37C; - func_80BBAE84(this, 7, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_PLAY_RIGHT, ANIMMODE_ONCE); this->unk_2BC = -1; this->unk_2B6 |= 0x40; break; @@ -118,23 +134,34 @@ void EnZos_Destroy(Actor* thisx, PlayState* play) { gSaveContext.save.weekEventReg[52] &= (u8)~0x10; } -void func_80BBAE84(EnZos* this, s16 arg1, u8 arg2) { - static AnimationHeader* sAnimations[] = { - &object_zos_Anim_00A164, &object_zos_Anim_01621C, &object_zos_Anim_016980, &object_zos_Anim_007C40, - &object_zos_Anim_008630, &object_zos_Anim_0090CC, &object_zos_Anim_009830, &object_zos_Anim_005E04, - &object_zos_Anim_007334, &object_zos_Anim_0048D4, &object_zos_Anim_001CFC, &object_zos_Anim_005E04, - &object_zos_Anim_007334, - }; - f32 phi_f0; +static AnimationHeader* sAnimations[] = { + &gEvanLeanOnKeyboardAnim, // EN_ZOS_ANIM_LEAN_ON_KEYBOARD + &gEvanLeanOnKeyboardAndSighAnim, // EN_ZOS_ANIM_LEAN_ON_KEYBOARD_AND_SIGH + &gEvanHandsOnHipsAnim, // EN_ZOS_ANIM_HANDS_ON_HIPS + &gEeanTalkFootTapAnim, // EN_ZOS_ANIM_TALK_FOOT_TAP + &gEvanTalkLookDownAnim, // EN_ZOS_ANIM_TALK_LOOK_DOWN + &gEvanTalkArmsOutAnim, // EN_ZOS_ANIM_TALK_ARMS_OUT + &gEvanTalkHandsOnHipsAnim, // EN_ZOS_ANIM_TALK_HANDS_ON_HIPS + &gEvanPlayRightAnim, // EN_ZOS_ANIM_PLAY_RIGHT + &gEvanPlayLeftAnim, // EN_ZOS_ANIM_PLAY_LEFT + &gEvanInspiredAnim, // EN_ZOS_ANIM_INSPIRED + &gEvanSlowPlayAnim, // EN_ZOS_ANIM_SLOW_PLAY + &gEvanPlayRightAnim, // EN_ZOS_ANIM_PLAY_RIGHT_SHORTENED + &gEvanPlayLeftAnim, // EN_ZOS_ANIM_PLAY_LEFT_SHORTENED +}; + +void EnZos_ChangeAnim(EnZos* this, s16 animIndex, u8 animMode) { + f32 endFrame; - if ((arg1 != this->unk_2B8) && (arg1 >= 0) && (arg1 < 13)) { - if (arg1 > 10) { - phi_f0 = 29.0f; + if ((animIndex != this->animIndex) && (animIndex >= EN_ZOS_ANIM_LEAN_ON_KEYBOARD) && + (animIndex < EN_ZOS_ANIM_MAX)) { + if (animIndex > EN_ZOS_ANIM_SLOW_PLAY) { + endFrame = 29.0f; } else { - phi_f0 = Animation_GetLastFrame(sAnimations[arg1]); + endFrame = Animation_GetLastFrame(sAnimations[animIndex]); } - Animation_Change(&this->skelAnime, sAnimations[arg1], 1.0f, 0.0f, phi_f0, arg2, -5.0f); - this->unk_2B8 = arg1; + Animation_Change(&this->skelAnime, sAnimations[animIndex], 1.0f, 0.0f, endFrame, animMode, -5.0f); + this->animIndex = animIndex; this->unk_2B6 &= ~0x80; } } @@ -153,19 +180,19 @@ s32 func_80BBAFFC(EnZos* this, PlayState* play) { if (SkelAnime_Update(&this->skelAnime)) { switch ((s16)Rand_ZeroFloat(4.0f)) { case 0: - func_80BBAE84(this, 7, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_PLAY_RIGHT, ANIMMODE_ONCE); break; case 1: - func_80BBAE84(this, 8, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_PLAY_LEFT, ANIMMODE_ONCE); break; case 2: - func_80BBAE84(this, 11, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_PLAY_RIGHT_SHORTENED, ANIMMODE_ONCE); break; default: - func_80BBAE84(this, 12, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_PLAY_LEFT_SHORTENED, ANIMMODE_ONCE); break; } return true; @@ -176,9 +203,9 @@ s32 func_80BBAFFC(EnZos* this, PlayState* play) { void func_80BBB0D4(EnZos* this, PlayState* play) { if (SkelAnime_Update(&this->skelAnime)) { if (Rand_ZeroFloat(1.0f) < 0.9f) { - func_80BBAE84(this, 0, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_LEAN_ON_KEYBOARD, ANIMMODE_ONCE); } else { - func_80BBAE84(this, 1, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_LEAN_ON_KEYBOARD_AND_SIGH, ANIMMODE_ONCE); } SkelAnime_Update(&this->skelAnime); } @@ -190,31 +217,31 @@ void func_80BBB15C(EnZos* this, PlayState* play) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { if (this->unk_2B6 & 8) { textId = 0x1235; - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); this->unk_2B6 |= 2; } else if (this->unk_2B6 & 4) { textId = 0x123E; - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); this->unk_2B6 |= 2; } else if (gSaveContext.save.weekEventReg[40] & 0x20) { textId = 0x1236; - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); this->unk_2B6 |= 0x80; } else { textId = 0x1231; - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); this->unk_2B6 |= 0x80; } } else { this->unk_2B6 &= ~2; if (gSaveContext.save.weekEventReg[39] & 0x10) { textId = 0x1243; - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); this->unk_2B6 |= 0x80; } else { textId = 0x1244; gSaveContext.save.weekEventReg[39] |= 0x10; - func_80BBAE84(this, 4, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_LOOK_DOWN, ANIMMODE_LOOP); this->unk_2B6 |= 0x10; } } @@ -261,11 +288,11 @@ void func_80BBB414(EnZos* this, PlayState* play) { switch (action) { case 1: - func_80BBAE84(this, 1, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_LEAN_ON_KEYBOARD_AND_SIGH, ANIMMODE_LOOP); break; case 2: - func_80BBAE84(this, 10, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_SLOW_PLAY, ANIMMODE_LOOP); break; } } @@ -304,7 +331,7 @@ void func_80BBB574(EnZos* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { switch (play->msgCtx.currentTextId) { case 0x124B: - if (this->unk_2B8 == 9) { + if (this->animIndex == EN_ZOS_ANIM_INSPIRED) { play->msgCtx.msgLength = 0; this->unk_2B6 |= 0x20; } else { @@ -315,12 +342,12 @@ void func_80BBB574(EnZos* this, PlayState* play) { case 0x124C: play->msgCtx.msgLength = 0; this->actionFunc = func_80BBB4CC; - func_80BBAE84(this, 10, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_SLOW_PLAY, ANIMMODE_LOOP); break; case 0x124D: this->unk_2B6 &= ~0x10; - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); func_80151938(play, 0x124E); break; @@ -346,7 +373,7 @@ void func_80BBB718(EnZos* this, PlayState* play) { if (sp24 == 25) { player->actor.textId = 0x1232; - func_80BBAE84(this, 5, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_ARMS_OUT, ANIMMODE_LOOP); this->unk_2B6 |= 8; gSaveContext.save.weekEventReg[40] |= 0x20; } else if (gSaveContext.save.weekEventReg[39] & 8) { @@ -354,7 +381,7 @@ void func_80BBB718(EnZos* this, PlayState* play) { } else { player->actor.textId = 0x1237; gSaveContext.save.weekEventReg[39] |= 8; - func_80BBAE84(this, 4, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_LOOK_DOWN, ANIMMODE_LOOP); this->unk_2B6 |= 4; } this->actionFunc = func_80BBB8AC; @@ -364,7 +391,7 @@ void func_80BBB718(EnZos* this, PlayState* play) { } else { func_80151938(play, 0x1237); gSaveContext.save.weekEventReg[39] |= 8; - func_80BBAE84(this, 4, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_LOOK_DOWN, ANIMMODE_LOOP); this->unk_2B6 |= 4; } this->actionFunc = func_80BBB8AC; @@ -382,7 +409,7 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 2, 0x1000, 0x200); this->actor.world.rot.y = this->actor.shape.rot.y; if ((this->unk_2B6 & 0x80) && (this->actor.yawTowardsPlayer == this->actor.shape.rot.y)) { - func_80BBAE84(this, 3, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_FOOT_TAP, ANIMMODE_LOOP); } } @@ -402,7 +429,7 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { case 0x1244: this->unk_2B6 &= ~0x10; - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); func_80151938(play, play->msgCtx.currentTextId + 1); break; @@ -412,18 +439,18 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { case 0x1239: case 0x1246: - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); func_80151938(play, play->msgCtx.currentTextId + 1); break; case 0x1233: - func_80BBAE84(this, 5, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_ARMS_OUT, ANIMMODE_LOOP); func_80151938(play, play->msgCtx.currentTextId + 1); break; case 0x1245: case 0x1248: - func_80BBAE84(this, 3, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_FOOT_TAP, ANIMMODE_LOOP); func_80151938(play, play->msgCtx.currentTextId + 1); break; @@ -434,7 +461,7 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { case 0x1243: case 0x1249: - func_80BBAE84(this, 2, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); func_801477B4(play); this->actionFunc = func_80BBBDE0; this->unk_2B6 |= 1; @@ -443,7 +470,7 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { case 0x1234: case 0x123D: case 0x1242: - func_80BBAE84(this, 2, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); Actor_ProcessTalkRequest(&this->actor, &play->state); func_801477B4(play); this->actionFunc = func_80BBBDE0; @@ -451,7 +478,7 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { break; case 0x1236: - func_80BBAE84(this, 2, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); func_801477B4(play); this->actionFunc = func_80BBBDE0; this->unk_2B6 |= 1; @@ -473,17 +500,17 @@ void func_80BBBB84(EnZos* this, PlayState* play) { if (gSaveContext.save.playerForm == PLAYER_FORM_ZORA) { Message_StartTextbox(play, 0x1248, &this->actor); this->actionFunc = func_80BBB8AC; - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); this->unk_2B6 |= 2; } else if (gSaveContext.save.weekEventReg[41] & 0x10) { Message_StartTextbox(play, 0x124A, &this->actor); this->actionFunc = func_80BBB8AC; - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); } else { gSaveContext.save.weekEventReg[41] |= 0x10; Message_StartTextbox(play, 0x124B, &this->actor); this->actionFunc = func_80BBB574; - func_80BBAE84(this, 9, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_INSPIRED, ANIMMODE_ONCE); this->unk_2B6 |= 0x10; } } else { @@ -494,7 +521,7 @@ void func_80BBBB84(EnZos* this, PlayState* play) { void func_80BBBCBC(EnZos* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actor.flags &= ~ACTOR_FLAG_10000; - func_80BBAE84(this, 5, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_ARMS_OUT, ANIMMODE_LOOP); Message_StartTextbox(play, 0x124D, &this->actor); this->actionFunc = func_80BBB574; } else { @@ -519,7 +546,7 @@ void func_80BBBDE0(EnZos* this, PlayState* play) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.home.rot.y, 2, 0x1000, 0x200); this->actor.world.rot.y = thisx->shape.rot.y; if (this->actor.home.rot.y == thisx->shape.rot.y) { - func_80BBAE84(this, 0, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_LEAN_ON_KEYBOARD, ANIMMODE_ONCE); this->unk_2B6 &= ~1; } } @@ -567,10 +594,10 @@ void func_80BBBFBC(EnZos* this, PlayState* play) { textId = 0x1259; gSaveContext.save.weekEventReg[78] |= 0x80; } - func_80BBAE84(this, 5, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_ARMS_OUT, ANIMMODE_LOOP); } else { textId = 0x1258; - func_80BBAE84(this, 6, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); } Message_StartTextbox(play, textId, &this->actor); } @@ -583,7 +610,7 @@ void func_80BBC070(EnZos* this, PlayState* play) { switch (Message_GetState(&play->msgCtx)) { case TEXT_STATE_5: if (Message_ShouldAdvance(play)) { - func_80BBAE84(this, 2, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); func_801477B4(play); this->actionFunc = func_80BBC14C; this->unk_2B6 |= 1; @@ -591,7 +618,7 @@ void func_80BBC070(EnZos* this, PlayState* play) { break; case TEXT_STATE_CLOSING: - func_80BBAE84(this, 2, ANIMMODE_LOOP); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); this->actionFunc = func_80BBC14C; this->unk_2B6 |= 1; break; @@ -605,7 +632,7 @@ void func_80BBC14C(EnZos* this, PlayState* play) { Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.home.rot.y, 2, 0x1000, 0x200); this->actor.world.rot.y = thisx->shape.rot.y; if (this->actor.home.rot.y == this->actor.shape.rot.y) { - func_80BBAE84(this, 0, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_LEAN_ON_KEYBOARD, ANIMMODE_ONCE); this->unk_2B6 &= ~1; } } @@ -628,7 +655,7 @@ void func_80BBC24C(EnZos* this, PlayState* play) { func_80BBB0D4(this, play); if (gSaveContext.save.weekEventReg[79] & 1) { this->actionFunc = func_80BBC22C; - func_80BBAE84(this, 7, ANIMMODE_ONCE); + EnZos_ChangeAnim(this, EN_ZOS_ANIM_PLAY_RIGHT, ANIMMODE_ONCE); } } @@ -675,13 +702,13 @@ void EnZos_Update(Actor* thisx, PlayState* play) { this->actionFunc(this, play); - if (DECR(this->unk_2AE) == 0) { - this->unk_2AE = Rand_S16Offset(60, 60); + if (DECR(this->blinkTimer) == 0) { + this->blinkTimer = Rand_S16Offset(60, 60); } - this->unk_2AC = this->unk_2AE; - if (this->unk_2AC >= 3) { - this->unk_2AC = 0; + this->eyeIndex = this->blinkTimer; + if (this->eyeIndex >= 3) { + this->eyeIndex = 0; } } @@ -692,16 +719,16 @@ s32 func_80BBC4E4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s void func_80BBC500(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) { static Vec3f D_80BBC750 = { 0.0f, 0.0f, 0.0f }; - if (limbIndex == 9) { + if (limbIndex == EVAN_LIMB_HEAD) { Matrix_MultVec3f(&D_80BBC750, &thisx->focus.pos); } } void EnZos_Draw(Actor* thisx, PlayState* play) { - static TexturePtr D_80BBC75C[] = { - object_zos_Tex_010918, - object_zos_Tex_011118, - object_zos_Tex_011918, + static TexturePtr sEyeTextures[] = { + gEvanEyeOpenTex, + gEvanEyeHalfTex, + gEvanEyeClosedTex, }; EnZos* this = THIS; Gfx* gfx; @@ -716,15 +743,15 @@ void EnZos_Draw(Actor* thisx, PlayState* play) { gfx = POLY_OPA_DISP; - gSPSegment(&gfx[0], 0x08, Lib_SegmentedToVirtual(D_80BBC75C[this->unk_2AC])); + gSPSegment(&gfx[0], 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeIndex])); Matrix_Push(); Matrix_RotateYS(this->actor.home.rot.y - this->actor.shape.rot.y, MTXMODE_APPLY); Matrix_Translate(0.0f, 0.0f, -974.4f, MTXMODE_APPLY); gSPMatrix(&gfx[1], Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(&gfx[2], object_zos_DL_0136E0); - gSPDisplayList(&gfx[3], object_zos_DL_013088); + gSPDisplayList(&gfx[2], gEvanUnknownWhiteTriangleDL); + gSPDisplayList(&gfx[3], gEvanKeyboardDL); POLY_OPA_DISP = &gfx[4]; diff --git a/src/overlays/actors/ovl_En_Zos/z_en_zos.h b/src/overlays/actors/ovl_En_Zos/z_en_zos.h index 99125aad3..bf5a9c07b 100644 --- a/src/overlays/actors/ovl_En_Zos/z_en_zos.h +++ b/src/overlays/actors/ovl_En_Zos/z_en_zos.h @@ -2,6 +2,7 @@ #define Z_EN_ZOS_H #include "global.h" +#include "objects/object_zos/object_zos.h" struct EnZos; @@ -16,15 +17,15 @@ enum { typedef struct EnZos { /* 0x000 */ Actor actor; - /* 0x144 */ Vec3s jointTable[18]; - /* 0x1B0 */ Vec3s morphTable[18]; + /* 0x144 */ Vec3s jointTable[EVAN_LIMB_MAX]; + /* 0x1B0 */ Vec3s morphTable[EVAN_LIMB_MAX]; /* 0x21C */ SkelAnime skelAnime; /* 0x260 */ ColliderCylinder collider; - /* 0x2AC */ s16 unk_2AC; - /* 0x2AE */ s16 unk_2AE; + /* 0x2AC */ s16 eyeIndex; + /* 0x2AE */ s16 blinkTimer; /* 0x2B0 */ UNK_TYPE1 unk2B0[6]; /* 0x2B6 */ u16 unk_2B6; - /* 0x2B8 */ s16 unk_2B8; + /* 0x2B8 */ s16 animIndex; /* 0x2BA */ s16 unk_2BA; /* 0x2BC */ s16 unk_2BC; /* 0x2C0 */ EnZosActionFunc actionFunc; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 11d38fc43..d741d7408 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -15387,7 +15387,7 @@ 0x80BBA930:("func_80BBA930",), 0x80BBACA0:("EnZos_Init",), 0x80BBAE60:("EnZos_Destroy",), - 0x80BBAE84:("func_80BBAE84",), + 0x80BBAE84:("EnZos_ChangeAnim",), 0x80BBAF5C:("func_80BBAF5C",), 0x80BBAFFC:("func_80BBAFFC",), 0x80BBB0D4:("func_80BBB0D4",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 26cb0b9fb..0ea237d4b 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -15606,7 +15606,7 @@ 0x80BBC6F0:("D_80BBC6F0","UNK_TYPE1","",0x1), 0x80BBC71C:("D_80BBC71C","UNK_TYPE1","",0x1), 0x80BBC750:("D_80BBC750","UNK_TYPE1","",0x1), - 0x80BBC75C:("D_80BBC75C","UNK_TYPE1","",0x1), + 0x80BBC75C:("sEyeTextures","UNK_TYPE1","",0x1), 0x80BBC770:("D_80BBC770","f32","",0x4), 0x80BBC774:("jtbl_80BBC774","UNK_PTR","",0x4), 0x80BBF800:("En_S_Goro_InitVars","ActorInit","",0x20), |
