`DmZl` OK and some docs of `object_zl4` (Child Zelda used in one cutscene) (#834)

* DmZl: start

* DmZl: progress

* DmZl4: progress

* DmZl: OK

* DmZl: data integrated

* DmZl: object docs

* DmZl: more object docs

* DmZl: more docs

* DmZl: Some Zl4 animations

* ObjectZl4: docs

* DmZl: formater pass

* DmZl: more docs

* DmZl: docs

* DmZl: params documentation

* Apply suggestions from code review

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* DmZl: requested changes, minor fixes, formater pass

* Update src/overlays/actors/ovl_Dm_Zl/z_dm_zl.c

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>

* Update assets/xml/objects/object_zl4.xml

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>

* DmZl: some requested changes

* DmZl: Change Eye Texture names for accuracy, formatter pass

* DmZl: Eye texture indexes specified

* DmZl: fixed struct variable names

* DmZl: some requested changes

* DmZl: removed comment

* DmZl: change to unused index

* DmZl: changed some xml comments

* DmZl: requested changes 1

* Update src/overlays/actors/ovl_Dm_Zl/z_dm_zl.c

Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>

* DmZl: fixing issues, formatter pass

* DmZl: moved switch case

* DmZl: fixed object reference, wrong file

* Update src/overlays/actors/ovl_Dm_Zl/z_dm_zl.c

Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com>

* Update assets/xml/objects/object_zl4.xml

Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com>

* DmZl: mouth and eye state comments

Co-authored-by: Isghj8 <isghj8@gmail.com>
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>
Co-authored-by: EllipticEllipsis <elliptic.ellipsis@gmail.com>
This commit is contained in:
Isghj 2022-06-19 15:36:07 -07:00 committed by GitHub
parent 67345d9be5
commit ab7625db65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 440 additions and 149 deletions

View File

@ -1,125 +1,164 @@
<Root> <Root>
<!-- Child Zelda: from the cutscene where Deku Link recalls how to play Song of Time after getting his Ocarina back -->
<File Name="object_zl4" Segment="6"> <File Name="object_zl4" Segment="6">
<Animation Name="object_zl4_Anim_000654" Offset="0x654" /> <!-- Everything up to and including the skeleton is retained from the beginning of OoT's object_zl4 -->
<Texture Name="object_zl4_TLUT_000670" OutName="tlut_000670" Format="rgba16" Width="16" Height="16" Offset="0x670" /> <Animation Name="gDmZl4IdleAnim" Offset="0x654" />
<Texture Name="object_zl4_Tex_000870" OutName="tex_000870" Format="rgba16" Width="16" Height="16" Offset="0x870" /> <Texture Name="gDmZl4DressTLUT" OutName="dress_tlut" Format="rgba16" Width="16" Height="16" Offset="0x670" />
<Texture Name="object_zl4_Tex_000A70" OutName="tex_000A70" Format="rgba16" Width="16" Height="16" Offset="0xA70" /> <Texture Name="gDmZl4EyeTLUT" OutName="eye_tlut" Format="rgba16" Width="16" Height="16" Offset="0x870" />
<Texture Name="object_zl4_Tex_000C70" OutName="tex_000C70" Format="ci8" Width="8" Height="8" Offset="0xC70" /> <Texture Name="gDmZl4MouthTLUT" OutName="mouth_tlut" Format="rgba16" Width="16" Height="16" Offset="0xA70" />
<Texture Name="object_zl4_Tex_000CB0" OutName="tex_000CB0" Format="ci8" Width="16" Height="16" Offset="0xCB0" /> <Texture Name="gDmZl4DressGradientTex" OutName="dress_gradient" Format="ci8" Width="8" Height="8" Offset="0xC70" />
<Texture Name="object_zl4_Tex_000DB0" OutName="tex_000DB0" Format="ci8" Width="32" Height="64" Offset="0xDB0" /> <Texture Name="gDmZl4DressPurpleTex" OutName="purple_dress_patern" Format="ci8" Width="16" Height="16" Offset="0xCB0" />
<Texture Name="object_zl4_Tex_0015B0" OutName="tex_0015B0" Format="rgba16" Width="8" Height="8" Offset="0x15B0" /> <Texture Name="gDmZl4TriforceSashTex" OutName="triforce_sash" Format="ci8" Width="32" Height="64" Offset="0xDB0" />
<Texture Name="object_zl4_Tex_001630" OutName="tex_001630" Format="rgba16" Width="8" Height="8" Offset="0x1630" /> <Texture Name="gDmZl4BootLacesTex" OutName="boot_laces" Format="rgba16" Width="8" Height="8" Offset="0x15B0" />
<Texture Name="object_zl4_Tex_0016B0" OutName="tex_0016B0" Format="ci8" Width="32" Height="8" Offset="0x16B0" /> <Texture Name="gDmZl4BootTex" OutName="boot" Format="rgba16" Width="8" Height="8" Offset="0x1630" />
<Texture Name="object_zl4_Tex_0017B0" OutName="tex_0017B0" Format="ci8" Width="8" Height="8" Offset="0x17B0" /> <Texture Name="gDmZl4AltDressBeltTex" OutName="alternate_dress_belt" Format="ci8" Width="32" Height="8" Offset="0x16B0" />
<Texture Name="object_zl4_Tex_0017F0" OutName="tex_0017F0" Format="ci8" Width="32" Height="32" Offset="0x17F0" /> <Texture Name="gDmZl4AltDressTex" OutName="alternate_dress_patern" Format="ci8" Width="8" Height="8" Offset="0x17B0" />
<Texture Name="object_zl4_Tex_001BF0" OutName="tex_001BF0" Format="rgba16" Width="8" Height="16" Offset="0x1BF0" /> <Texture Name="gDmZl4DressWrinklesTex" OutName="dress_wrinkles" Format="ci8" Width="32" Height="32" Offset="0x17F0" />
<Texture Name="object_zl4_Tex_001CF0" OutName="tex_001CF0" Format="ci8" Width="16" Height="16" Offset="0x1CF0" /> <Texture Name="gDmZl4AltDressLiningTex" OutName="alternate_dress_lining" Format="rgba16" Width="8" Height="16" Offset="0x1BF0" />
<Texture Name="object_zl4_Tex_001DF0" OutName="tex_001DF0" Format="ci8" Width="8" Height="8" Offset="0x1DF0" /> <Texture Name="gDmZl4AltDressGradientTex" OutName="alternate_dress_gradient" Format="ci8" Width="16" Height="16" Offset="0x1CF0" />
<Texture Name="object_zl4_Tex_001E30" OutName="tex_001E30" Format="rgba16" Width="16" Height="32" Offset="0x1E30" />
<Texture Name="object_zl4_Tex_002230" OutName="tex_002230" Format="ci8" Width="8" Height="8" Offset="0x2230" /> <!-- not named in OOT, some blue blemish center -->
<Texture Name="object_zl4_Tex_002270" OutName="tex_002270" Format="ci8" Width="8" Height="16" Offset="0x2270" /> <Texture Name="gDmZl4_001DF0_Tex" OutName="tex_001DF0" Format="ci8" Width="8" Height="8" Offset="0x1DF0" />
<Texture Name="object_zl4_Tex_0022F0" OutName="tex_0022F0" Format="ci8" Width="16" Height="32" Offset="0x22F0" /> <Texture Name="gDmZl4HeadressTriforceEmblemTex" OutName="headdress_triforce_emblem" Format="rgba16" Width="16" Height="32" Offset="0x1E30" />
<Texture Name="object_zl4_Tex_0024F0" OutName="tex_0024F0" Format="rgba16" Width="16" Height="16" Offset="0x24F0" /> <Texture Name="gDmZl4HeadressGradientTex" OutName="headdress_gradient" Format="ci8" Width="8" Height="8" Offset="0x2230" />
<Texture Name="object_zl4_Tex_0026F0" OutName="tex_0026F0" Format="rgba16" Width="16" Height="16" Offset="0x26F0" /> <!-- not named in OOT, gradient with dark blotch bottom-->
<Texture Name="object_zl4_Tex_0028F0" OutName="tex_0028F0" Format="rgba16" Width="8" Height="8" Offset="0x28F0" /> <Texture Name="gDmZl4_002270_Tex" OutName="tex_002270" Format="ci8" Width="8" Height="16" Offset="0x2270" />
<Texture Name="object_zl4_Tex_002970" OutName="tex_002970" Format="rgba16" Width="8" Height="8" Offset="0x2970" /> <Texture Name="gDmZl4HeaddressStripeTex" OutName="headdress_stripe" Format="ci8" Width="16" Height="32" Offset="0x22F0" />
<Texture Name="object_zl4_Tex_0029F0" OutName="tex_0029F0" Format="rgba16" Width="16" Height="8" Offset="0x29F0" /> <Texture Name="gDmZl4EarTex" OutName="ear" Format="rgba16" Width="16" Height="16" Offset="0x24F0" />
<!-- <Blob Name="object_zl4_Blob_002AF0" Size="0x2C00" Offset="0x2AF0" /> --> <Texture Name="gDmZl4HairOnSideTex" OutName="hair_on_side" Format="rgba16" Width="16" Height="16" Offset="0x26F0" />
<Texture Name="object_zl4_Tex_0056F0" OutName="tex_0056F0" Format="rgba16" Width="16" Height="16" Offset="0x56F0" /> <Texture Name="gDmZl4SkinGradientTex" OutName="skin_gradient" Format="rgba16" Width="8" Height="8" Offset="0x28F0" />
<Texture Name="object_zl4_Tex_0058F0" OutName="tex_0058F0" Format="ci8" Width="16" Height="16" Offset="0x58F0" /> <!-- not named in OOT, some skin blemish center -->
<Texture Name="object_zl4_Tex_0059F0" OutName="tex_0059F0" Format="rgba16" Width="8" Height="8" Offset="0x59F0" /> <Texture Name="gDmZl4_002970_Tex" OutName="tex_002970" Format="rgba16" Width="8" Height="8" Offset="0x2970" />
<Texture Name="object_zl4_Tex_005A70" OutName="tex_005A70" Format="rgba16" Width="16" Height="16" Offset="0x5A70" /> <Texture Name="gDmZl4HairTex" OutName="hair" Format="rgba16" Width="16" Height="8" Offset="0x29F0" />
<Texture Name="object_zl4_Tex_005C70" OutName="tex_005C70" Format="ci8" Width="8" Height="8" Offset="0x5C70" />
<Texture Name="object_zl4_Tex_005CB0" OutName="tex_005CB0" Format="ci8" Width="16" Height="16" Offset="0x5CB0" /> <!-- Eye Textures -->
<Texture Name="object_zl4_Tex_005DB0" OutName="tex_005DB0" Format="rgba16" Width="32" Height="32" Offset="0x5DB0" /> <Texture Name="gDmZl4EyeOpenNormalTex" OutName="eye_open_normal" Format="ci8" Width="32" Height="32" Offset="0x2AF0" TlutOffset="0x870"/>
<DList Name="object_zl4_DL_00A630" Offset="0xA630" /> <Texture Name="gDmZl4EyeHalfTex" OutName="eye_blinking" Format="ci8" Width="32" Height="32" Offset="0x2EF0" TlutOffset="0x870"/>
<DList Name="object_zl4_DL_00AFC8" Offset="0xAFC8" /> <Texture Name="gDmZl4EyeClosedTex" OutName="eye_closed" Format="ci8" Width="32" Height="32" Offset="0x32F0" TlutOffset="0x870"/>
<DList Name="object_zl4_DL_00B8D8" Offset="0xB8D8" /> <Texture Name="gDmZl4EyeWideTex" OutName="eye_wide" Format="ci8" Width="32" Height="32" Offset="0x36F0" TlutOffset="0x870"/>
<DList Name="object_zl4_DL_00BB40" Offset="0xBB40" /> <Texture Name="gDmZl4EyeHappyTex" OutName="eye_happy" Format="ci8" Width="32" Height="32" Offset="0x3AF0" TlutOffset="0x870"/>
<DList Name="object_zl4_DL_00BC90" Offset="0xBC90" /> <Texture Name="gDmZl4EyeOpenLookingLeftTex" OutName="eye_open_looking_left" Format="ci8" Width="32" Height="32" Offset="0x3EF0" TlutOffset="0x870"/>
<DList Name="object_zl4_DL_00BE70" Offset="0xBE70" /> <Texture Name="gDmZl4EyeOpenLookingRightTex" OutName="eye_open_looking_right" Format="ci8" Width="32" Height="32" Offset="0x42F0" TlutOffset="0x870"/>
<DList Name="object_zl4_DL_00C0E0" Offset="0xC0E0" />
<DList Name="object_zl4_DL_00C230" Offset="0xC230" /> <!-- Mouth Textures -->
<DList Name="object_zl4_DL_00C410" Offset="0xC410" /> <Texture Name="gZl4MouthNeutralTex" OutName="mouth_neutral" Format="ci8" Width="32" Height="32" Offset="0x46F0" TlutOffset="0xA70"/>
<DList Name="object_zl4_DL_00C8D0" Offset="0xC8D0" /> <Texture Name="gZl4MouthOpenSmilingTex" OutName="mouth_open_smiling" Format="ci8" Width="32" Height="32" Offset="0x4AF0" TlutOffset="0xA70"/>
<DList Name="object_zl4_DL_00D0E8" Offset="0xD0E8" /> <Texture Name="gZl4MouthFrowningTex" OutName="mouth_frowning" Format="ci8" Width="32" Height="32" Offset="0x4EF0" TlutOffset="0xA70"/>
<DList Name="object_zl4_DL_00D2A0" Offset="0xD2A0" /> <Texture Name="gZl4MouthOpenTex" OutName="mouth_open" Format="ci8" Width="32" Height="32" Offset="0x52F0" TlutOffset="0xA70"/>
<DList Name="object_zl4_DL_00D460" Offset="0xD460" />
<DList Name="object_zl4_DL_00D598" Offset="0xD598" /> <Texture Name="gDmZl4FingersTex" OutName="fingers" Format="rgba16" Width="16" Height="16" Offset="0x56F0" />
<DList Name="object_zl4_DL_00D5E8" Offset="0xD5E8" /> <Texture Name="gDmZl4BraceletTex" OutName="bracelet" Format="ci8" Width="16" Height="16" Offset="0x58F0" />
<DList Name="object_zl4_DL_00D728" Offset="0xD728" /> <Texture Name="gDmZl4BlueUndershirtGradient1Tex" OutName="blue_undershirt_gradient" Format="rgba16" Width="8" Height="8" Offset="0x59F0" />
<DList Name="object_zl4_DL_00D778" Offset="0xD778" /> <Texture Name="gDmZl4BlueUndershirtGradient2Tex" OutName="blue_undershirt_gradient_2" Format="rgba16" Width="16" Height="16" Offset="0x5A70" />
<Texture Name="object_zl4_Tex_00D8B8" OutName="tex_00D8B8" Format="rgba16" Width="32" Height="16" Offset="0xD8B8" /> <Texture Name="gDmZl4StripedShoulderTex" OutName="striped_shoulder_patern" Format="ci8" Width="8" Height="8" Offset="0x5C70" />
<DList Name="object_zl4_DL_00DE08" Offset="0xDE08" /> <Texture Name="gDmZl4UndershirtWrinklesTex" OutName="undershirt_wrinkles" Format="ci8" Width="16" Height="16" Offset="0x5CB0" />
<Limb Name="object_zl4_Standardlimb_00DF28" Type="Standard" EnumName="OBJECT_ZL4_LIMB_01" Offset="0xDF28" /> <Texture Name="gDmZl4PendantTex" OutName="pendant" Format="rgba16" Width="32" Height="32" Offset="0x5DB0" />
<Limb Name="object_zl4_Standardlimb_00DF34" Type="Standard" EnumName="OBJECT_ZL4_LIMB_02" Offset="0xDF34" />
<Limb Name="object_zl4_Standardlimb_00DF40" Type="Standard" EnumName="OBJECT_ZL4_LIMB_03" Offset="0xDF40" /> <DList Name="gDmZl4ChestDL" Offset="0xA630" />
<Limb Name="object_zl4_Standardlimb_00DF4C" Type="Standard" EnumName="OBJECT_ZL4_LIMB_04" Offset="0xDF4C" /> <DList Name="gDmZl4HeadDL" Offset="0xAFC8" />
<Limb Name="object_zl4_Standardlimb_00DF58" Type="Standard" EnumName="OBJECT_ZL4_LIMB_05" Offset="0xDF58" /> <DList Name="gDmZl4RightUpperArmDL" Offset="0xB8D8" />
<Limb Name="object_zl4_Standardlimb_00DF64" Type="Standard" EnumName="OBJECT_ZL4_LIMB_06" Offset="0xDF64" /> <DList Name="gDmZl4RightForearmDL" Offset="0xBB40" />
<Limb Name="object_zl4_Standardlimb_00DF70" Type="Standard" EnumName="OBJECT_ZL4_LIMB_07" Offset="0xDF70" /> <DList Name="gDmZl4RightHandDL" Offset="0xBC90" />
<Limb Name="object_zl4_Standardlimb_00DF7C" Type="Standard" EnumName="OBJECT_ZL4_LIMB_08" Offset="0xDF7C" /> <DList Name="gDmZl4LeftUpperArmDL" Offset="0xBE70" />
<Limb Name="object_zl4_Standardlimb_00DF88" Type="Standard" EnumName="OBJECT_ZL4_LIMB_09" Offset="0xDF88" /> <DList Name="gDmZl4LeftForearmDL" Offset="0xC0E0" />
<Limb Name="object_zl4_Standardlimb_00DF94" Type="Standard" EnumName="OBJECT_ZL4_LIMB_0A" Offset="0xDF94" /> <DList Name="gDmZl4LeftHandDL" Offset="0xC230" />
<Limb Name="object_zl4_Standardlimb_00DFA0" Type="Standard" EnumName="OBJECT_ZL4_LIMB_0B" Offset="0xDFA0" /> <DList Name="gDmZl4HorseRidingDressDL" Offset="0xC410" />
<Limb Name="object_zl4_Standardlimb_00DFAC" Type="Standard" EnumName="OBJECT_ZL4_LIMB_0C" Offset="0xDFAC" /> <DList Name="gDmZl4WaistDL" Offset="0xC8D0" />
<Limb Name="object_zl4_Standardlimb_00DFB8" Type="Standard" EnumName="OBJECT_ZL4_LIMB_0D" Offset="0xDFB8" /> <DList Name="gDmZl4Dress1DL" Offset="0xD0E8" />
<Limb Name="object_zl4_Standardlimb_00DFC4" Type="Standard" EnumName="OBJECT_ZL4_LIMB_0E" Offset="0xDFC4" /> <DList Name="gDmZl4Dress2DL" Offset="0xD2A0" />
<Limb Name="object_zl4_Standardlimb_00DFD0" Type="Standard" EnumName="OBJECT_ZL4_LIMB_0F" Offset="0xDFD0" /> <DList Name="gDmZl4Dress3DL" Offset="0xD460" />
<Limb Name="object_zl4_Standardlimb_00DFDC" Type="Standard" EnumName="OBJECT_ZL4_LIMB_10" Offset="0xDFDC" /> <DList Name="gDmZl4RightLegDL" Offset="0xD598" />
<Limb Name="object_zl4_Standardlimb_00DFE8" Type="Standard" EnumName="OBJECT_ZL4_LIMB_11" Offset="0xDFE8" /> <DList Name="gDmZl4RightBootDL" Offset="0xD5E8" />
<Skeleton Name="object_zl4_Skel_00E038" Type="Flex" LimbType="Standard" LimbNone="OBJECT_ZL4_LIMB_NONE" LimbMax="OBJECT_ZL4_LIMB_MAX" EnumName="object_zl4_Limbs" Offset="0xE038" /> <DList Name="gDmZl4LeftLegDL" Offset="0xD728" />
<Animation Name="object_zl4_Anim_00F250" Offset="0xF250" /> <DList Name="gDmZl4LeftBootDL" Offset="0xD778" />
<Animation Name="object_zl4_Anim_00FDC8" Offset="0xFDC8" />
<Animation Name="object_zl4_Anim_010334" Offset="0x10334" /> <!-- Ocarina, drawn to right hand in OverrideLimbDraw -->
<Animation Name="object_zl4_Anim_0105C8" Offset="0x105C8" /> <Texture Name="gDmZl4OcarinaTex" OutName="ocarina" Format="rgba16" Width="32" Height="16" Offset="0xD8B8" />
<Animation Name="object_zl4_Anim_010D50" Offset="0x10D50" /> <DList Name="gDmZl4OcarinaDL" Offset="0xDE08" />
<Animation Name="object_zl4_Anim_011294" Offset="0x11294" />
<Animation Name="object_zl4_Anim_011BB8" Offset="0x11BB8" /> <Limb Name="gDmZl4RootLimb" Type="Standard" EnumName="ZL4_LIMB_ROOT" Offset="0xDF28" />
<Animation Name="object_zl4_Anim_0122E0" Offset="0x122E0" /> <Limb Name="gDmZl4WaistLimb" Type="Standard" EnumName="ZL4_LIMB_WAIST" Offset="0xDF34" />
<Animation Name="object_zl4_Anim_012A84" Offset="0x12A84" /> <Limb Name="gDmZl4LeftLegLimb" Type="Standard" EnumName="ZL4_LIMB_LEFT_LEG" Offset="0xDF40" />
<Animation Name="object_zl4_Anim_01303C" Offset="0x1303C" /> <Limb Name="gDmZl4LeftFootLimb" Type="Standard" EnumName="ZL4_LIMB_LEFT_FOOT" Offset="0xDF4C" />
<Animation Name="object_zl4_Anim_013934" Offset="0x13934" /> <Limb Name="gDmZl4RightLegLimb" Type="Standard" EnumName="ZL4_LIMB_RIGHT_LEG" Offset="0xDF58" />
<Animation Name="object_zl4_Anim_013F2C" Offset="0x13F2C" /> <Limb Name="gDmZl4RightFootLimb" Type="Standard" EnumName="ZL4_LIMB_RIGHT_FOOT" Offset="0xDF64" />
<Animation Name="object_zl4_Anim_014558" Offset="0x14558" /> <Limb Name="gDmZl4Dress1Limb" Type="Standard" EnumName="ZL4_LIMB_DRESS_1" Offset="0xDF70" />
<Animation Name="object_zl4_Anim_015494" Offset="0x15494" /> <Limb Name="gDmZl4Dress2Limb" Type="Standard" EnumName="ZL4_LIMB_DRESS_2" Offset="0xDF7C" />
<Animation Name="object_zl4_Anim_015A4C" Offset="0x15A4C" /> <Limb Name="gDmZl4Dress3Limb" Type="Standard" EnumName="ZL4_LIMB_DRESS_3" Offset="0xDF88" />
<Animation Name="object_zl4_Anim_015DA0" Offset="0x15DA0" /> <Limb Name="gDmZl4TorsoLimb" Type="Standard" EnumName="ZL4_LIMB_TORSO" Offset="0xDF94" />
<Animation Name="object_zl4_Anim_016328" Offset="0x16328" /> <Limb Name="gDmZl4LeftUpperArmLimb" Type="Standard" EnumName="ZL4_LIMB_LEFT_UPPER_ARM" Offset="0xDFA0" />
<Animation Name="object_zl4_Anim_016924" Offset="0x16924" /> <Limb Name="gDmZl4LeftForearmLimb" Type="Standard" EnumName="ZL4_LIMB_LEFT_FOREARM" Offset="0xDFAC" />
<Animation Name="object_zl4_Anim_016E04" Offset="0x16E04" /> <Limb Name="gDmZl4LeftHandLimb" Type="Standard" EnumName="ZL4_LIMB_LEFT_HAND" Offset="0xDFB8" />
<Animation Name="object_zl4_Anim_0175F4" Offset="0x175F4" /> <Limb Name="gDmZl4RightUpperArmLimb" Type="Standard" EnumName="ZL4_LIMB_RIGHT_UPPER_ARM" Offset="0xDFC4" />
<Animation Name="object_zl4_Anim_018B58" Offset="0x18B58" /> <Limb Name="gDmZl4RightForearmLimb" Type="Standard" EnumName="ZL4_LIMB_RIGHT_FOREARM" Offset="0xDFD0" />
<Animation Name="object_zl4_Anim_018FA8" Offset="0x18FA8" /> <Limb Name="gDmZl4RightHandLimb" Type="Standard" EnumName="ZL4_LIMB_RIGHT_HAND" Offset="0xDFDC" />
<Animation Name="object_zl4_Anim_0193F8" Offset="0x193F8" /> <Limb Name="gDmZl4HeadLimb" Type="Standard" EnumName="ZL4_LIMB_HEAD" Offset="0xDFE8" />
<Animation Name="object_zl4_Anim_019894" Offset="0x19894" /> <Skeleton Name="gZl4Skeleton" Type="Flex" LimbType="Standard" LimbNone="ZL4_LIMB_NONE" LimbMax="ZL4_LIMB_MAX" EnumName="zl4_Limbs" Offset="0xE038" />
<Animation Name="object_zl4_Anim_01A344" Offset="0x1A344" />
<Animation Name="object_zl4_Anim_01ABB8" Offset="0x1ABB8" />
<Animation Name="object_zl4_Anim_01AFE0" Offset="0x1AFE0" /> <!-- Unused Flute Animations -->
<Animation Name="object_zl4_Anim_01B388" Offset="0x1B388" /> <Animation Name="gDmZl4HoldingFluteInFrontAnim" Offset="0xFDC8" />
<Animation Name="object_zl4_Anim_01B7B0" Offset="0x1B7B0" /> <Animation Name="gDmZl4RaiseFluteToPlayAnim" Offset="0x10334" />
<Animation Name="object_zl4_Anim_01BC00" Offset="0x1BC00" /> <Animation Name="gDmZl4LowerFluteAfterPlayAnim" Offset="0x105C8" />
<Animation Name="object_zl4_Anim_01DC74" Offset="0x1DC74" /> <Animation Name="gDmZl4PlayingFluteAnim" Offset="0x10D50" />
<Animation Name="object_zl4_Anim_01E714" Offset="0x1E714" />
<Animation Name="object_zl4_Anim_01EA68" Offset="0x1EA68" /> <!-- Used in MM -->
<Animation Name="object_zl4_Anim_01EFCC" Offset="0x1EFCC" /> <Animation Name="gDmZl4TurningAroundAnim" Offset="0xF250" />
<Animation Name="object_zl4_Anim_01F578" Offset="0x1F578" /> <Animation Name="gDmZl4FacingAwayIdle" Offset="0x11294" />
<Animation Name="object_zl4_Anim_01FDBC" Offset="0x1FDBC" /> <Animation Name="gDmZl4GivingItemStartAnim" Offset="0x11BB8" />
<Animation Name="object_zl4_Anim_0205F8" Offset="0x205F8" /> <Animation Name="gDmZl4GivingItemLoopAnim" Offset="0x122E0" />
<Animation Name="object_zl4_Anim_020E6C" Offset="0x20E6C" /> <Animation Name="gDmZl4RaisingOcarinaToPlayAnim" Offset="0x12A84" />
<Animation Name="object_zl4_Anim_021360" Offset="0x21360" /> <Animation Name="gDmZl4PlayingOcarinaAnim" Offset="0x1303C" />
<Animation Name="object_zl4_Anim_02167C" Offset="0x2167C" />
<Animation Name="object_zl4_Anim_02205C" Offset="0x2205C" /> <!-- Unused Backflipping Animation -->
<Animation Name="object_zl4_Anim_022840" Offset="0x22840" /> <Animation Name="gDmZl4BackflipAnim" Offset="0x13934" />
<Animation Name="object_zl4_Anim_022BE8" Offset="0x22BE8" /> <Animation Name="gDmZl4BackflipPrepareAnim" Offset="0x13F2C" />
<Animation Name="object_zl4_Anim_0235D4" Offset="0x235D4" /> <Animation Name="gDmZl4BackflipPrepareHoldingReadyAnim" Offset="0x14558" />
<Animation Name="object_zl4_Anim_023A50" Offset="0x23A50" />
<Animation Name="object_zl4_Anim_0241F4" Offset="0x241F4" /> <!-- Used in MM -->
<Animation Name="object_zl4_Anim_024510" Offset="0x24510" /> <Animation Name="gDmZl4TurningAround2Anim" Offset="0x15494" />
<Animation Name="object_zl4_Anim_024B68" Offset="0x24B68" /> <Animation Name="gDmZl4HandsOverEmblemLoopAnim" Offset="0x15A4C" />
<DList Name="object_zl4_DL_024D80" Offset="0x24D80" /> <Animation Name="gDmZl4FacingAwayHandsOverEmblemLoop" Offset="0x15DA0" />
<DList Name="object_zl4_DL_024E40" Offset="0x24E40" />
<Texture Name="object_zl4_Tex_024E50" OutName="tex_024E50" Format="rgba16" Width="16" Height="8" Offset="0x24E50" /> <!-- Unused in MM, copy of OoT Animations in object_zl4:(0xE050 -> End) -->
<!-- <Blob Name="object_zl4_Blob_024F50" Size="0x10" Offset="0x24F50" /> --> <Animation Name="gDmZl4Anim_016328" Offset="0x16328" />
<Animation Name="gDmZl4Anim_016924" Offset="0x16924" />
<Animation Name="gDmZl4Anim_016E04" Offset="0x16E04" />
<Animation Name="gDmZl4Anim_0175F4" Offset="0x175F4" />
<Animation Name="gDmZl4Anim_018B58" Offset="0x18B58" />
<Animation Name="gDmZl4Anim_018FA8" Offset="0x18FA8" />
<Animation Name="gDmZl4Anim_0193F8" Offset="0x193F8" />
<Animation Name="gDmZl4Anim_019894" Offset="0x19894" />
<Animation Name="gDmZl4Anim_01A344" Offset="0x1A344" />
<Animation Name="gDmZl4Anim_01ABB8" Offset="0x1ABB8" />
<Animation Name="gDmZl4Anim_01AFE0" Offset="0x1AFE0" />
<Animation Name="gDmZl4Anim_01B388" Offset="0x1B388" />
<Animation Name="gDmZl4Anim_01B7B0" Offset="0x1B7B0" />
<Animation Name="gDmZl4Anim_01BC00" Offset="0x1BC00" />
<Animation Name="gDmZl4Anim_01DC74" Offset="0x1DC74" />
<Animation Name="gDmZl4Anim_01E714" Offset="0x1E714" />
<Animation Name="gDmZl4Anim_01EA68" Offset="0x1EA68" />
<Animation Name="gDmZl4Anim_01EFCC" Offset="0x1EFCC" />
<Animation Name="gDmZl4Anim_01F578" Offset="0x1F578" />
<Animation Name="gDmZl4Anim_01FDBC" Offset="0x1FDBC" />
<Animation Name="gDmZl4Anim_0205F8" Offset="0x205F8" />
<Animation Name="gDmZl4Anim_020E6C" Offset="0x20E6C" />
<Animation Name="gDmZl4Anim_021360" Offset="0x21360" />
<Animation Name="gDmZl4Anim_02167C" Offset="0x2167C" />
<Animation Name="gDmZl4Anim_02205C" Offset="0x2205C" />
<Animation Name="gDmZl4Anim_022840" Offset="0x22840" />
<Animation Name="gDmZl4Anim_022BE8" Offset="0x22BE8" />
<Animation Name="gDmZl4Anim_0235D4" Offset="0x235D4" />
<Animation Name="gDmZl4Anim_023A50" Offset="0x23A50" />
<Animation Name="gDmZl4Anim_0241F4" Offset="0x241F4" />
<Animation Name="gDmZl4Anim_024510" Offset="0x24510" />
<Animation Name="gDmZl4Anim_024B68" Offset="0x24B68" />
<!-- Unused Flute -->
<DList Name="gDmZl4FluteDL" Offset="0x24D80" />
<DList Name="gDmZl4FluteWrapperDL" Offset="0x24E40" />
<Texture Name="gDmZl4FluteHoleTex" OutName="flute_hole" Format="rgba16" Width="16" Height="8" Offset="0x24E50" />
<TextureAnimation Name="gDmZlEmptyTexAnim" Offset="0x24F50" />
</File> </File>
</Root> </Root>

3
spec
View File

@ -2704,8 +2704,7 @@ beginseg
name "ovl_Dm_Zl" name "ovl_Dm_Zl"
compress compress
include "build/src/overlays/actors/ovl_Dm_Zl/z_dm_zl.o" include "build/src/overlays/actors/ovl_Dm_Zl/z_dm_zl.o"
include "build/data/ovl_Dm_Zl/ovl_Dm_Zl.data.o" include "build/src/overlays/actors/ovl_Dm_Zl/ovl_Dm_Zl_reloc.o"
include "build/data/ovl_Dm_Zl/ovl_Dm_Zl.reloc.o"
endseg endseg
beginseg beginseg

View File

@ -1,7 +1,7 @@
/* /*
* File: z_dm_zl.c * File: z_dm_zl.c
* Overlay: ovl_Dm_Zl * Overlay: ovl_Dm_Zl
* Description: Child Zelda (Cutscenes) * Description: Child Zelda (Re-learning Song of Time cutscene)
*/ */
#include "z_dm_zl.h" #include "z_dm_zl.h"
@ -15,9 +15,8 @@ void DmZl_Destroy(Actor* thisx, GlobalContext* globalCtx);
void DmZl_Update(Actor* thisx, GlobalContext* globalCtx); void DmZl_Update(Actor* thisx, GlobalContext* globalCtx);
void DmZl_Draw(Actor* thisx, GlobalContext* globalCtx); void DmZl_Draw(Actor* thisx, GlobalContext* globalCtx);
void func_80A382FC(DmZl* this, GlobalContext* globalCtx); void DmZl_DoNothing(DmZl* this, GlobalContext* globalCtx);
#if 0
const ActorInit Dm_Zl_InitVars = { const ActorInit Dm_Zl_InitVars = {
ACTOR_DM_ZL, ACTOR_DM_ZL,
ACTORCAT_ITEMACTION, ACTORCAT_ITEMACTION,
@ -30,27 +29,269 @@ const ActorInit Dm_Zl_InitVars = {
(ActorFunc)DmZl_Draw, (ActorFunc)DmZl_Draw,
}; };
#endif static AnimationInfo sAnimations[] = {
{ &gDmZl4FacingAwayHandsOverEmblemLoop, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f },
{ &gDmZl4TurningAround2Anim, 1.0f, 0.0f, -1.0f, ANIMMODE_ONCE, -10.0f },
{ &gDmZl4HandsOverEmblemLoopAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f },
{ &gDmZl4GivingItemStartAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_ONCE, -10.0f },
{ &gDmZl4GivingItemLoopAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f },
{ &gDmZl4RaisingOcarinaToPlayAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_ONCE, -10.0f },
{ &gDmZl4PlayingOcarinaAnim, 1.0f, 0.0f, -1.0f, ANIMMODE_LOOP, -10.0f },
};
extern UNK_TYPE D_0600DE08; typedef enum {
extern UNK_TYPE D_0600E038; /* 0 */ ZELDA_ANIM_FACING_AWAY,
/* 1 */ ZELDA_ANIM_TURNING_TOWARD_PLAYER,
/* 2 */ ZELDA_ANIM_FACING_PLAYER,
/* 3 */ ZELDA_ANIM_GIVING_OCARINA_START,
/* 4 */ ZELDA_ANIM_GIVING_OCARINA,
/* 5 */ ZELDA_ANIM_PLAYING_OCARINA_START,
/* 6 */ ZELDA_ANIM_PLAYING_OCARINA,
/* 7 */ ZELDA_ANIM_MAX,
} DmZlAnimations;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Dm_Zl/func_80A38190.s") static TexturePtr sMouthTextures[] = {
gZl4MouthNeutralTex,
gZl4MouthOpenSmilingTex,
gZl4MouthFrowningTex,
gZl4MouthOpenTex,
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Dm_Zl/DmZl_Init.s") typedef enum {
/* 0 */ ZELDA_MOUTH_NEUTRAL,
/* 1 */ ZELDA_MOUTH_SMILING,
/* 2 */ ZELDA_MOUTH_FROWNING,
/* 3 */ ZELDA_MOUTH_OPEN,
} DmZlMouthTextures;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Dm_Zl/DmZl_Destroy.s") static TexturePtr sEyeTextures[] = {
gDmZl4EyeOpenNormalTex,
gDmZl4EyeHalfTex,
gDmZl4EyeClosedTex,
gDmZl4EyeWideTex,
gDmZl4EyeHappyTex,
gDmZl4EyeOpenLookingLeftTex,
gDmZl4EyeOpenLookingRightTex,
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Dm_Zl/func_80A382FC.s") typedef enum {
/* 0 */ ZELDA_EYE_OPEN_NORMAL,
/* 1 */ ZELDA_EYE_BLINKING,
/* 2 */ ZELDA_EYE_CLOSED,
/* 3 */ ZELDA_EYE_WIDE,
/* 4 */ ZELDA_EYE_HAPPY,
/* 5 */ ZELDA_EYE_OPEN_LOOKING_LEFT,
/* 6 */ ZELDA_EYE_OPEN_LOOKING_RIGHT,
} DmZlEyeTextures;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Dm_Zl/func_80A3830C.s") // Unused in MM
typedef enum {
/* 0 */ ZELDA_EYE_STATE_NORMAL,
/* 1 */ ZELDA_EYE_STATE_CLOSED,
/* 2 */ ZELDA_EYE_STATE_LOOKING_LEFT,
/* 3 */ ZELDA_EYE_STATE_LOOKING_RIGHT,
/* 4 */ ZELDA_EYE_STATE_WIDE,
/* 5 */ ZELDA_EYE_STATE_HAPPY,
/* 6 */ ZELDA_EYE_STATE_CLOSED2,
} DmZlEyeStates;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Dm_Zl/func_80A38468.s") /**
* This function is always called with unusedExtraOffset = 0.
*/
void DmZl_ChangeAnimation(SkelAnime* skelAnime, AnimationInfo animation[], u16 unusedExtraOffset) {
f32 endFrame;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Dm_Zl/DmZl_Update.s") animation += unusedExtraOffset;
endFrame = (animation->frameCount < 0.0f) ? Animation_GetLastFrame(animation->animation) : animation->frameCount;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Dm_Zl/func_80A3862C.s") Animation_Change(skelAnime, animation->animation, animation->playSpeed, animation->startFrame, endFrame,
animation->mode, animation->morphFrames);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Dm_Zl/func_80A38648.s") void DmZl_Init(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
DmZl* this = THIS;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Dm_Zl/DmZl_Draw.s") this->animationIndex = ZELDA_ANIM_FACING_AWAY;
this->unk_2BA = 0;
this->actor.targetArrowOffset = 1000.0f;
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 24.0f);
// these three set to NULL should mean they are dynamically allocated
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gZl4Skeleton, NULL, NULL, NULL, 0);
DmZl_ChangeAnimation(&this->skelAnime, &sAnimations[this->animationIndex], 0);
Actor_SetScale(&this->actor, 0.01f);
this->actionFunc = DmZl_DoNothing;
}
void DmZl_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
void DmZl_DoNothing(DmZl* this, GlobalContext* globalCtx) {
}
void DmZl_UpdateCutscene(DmZl* this, GlobalContext* globalCtx) {
s32 actionIndex;
if (Cutscene_CheckActorAction(globalCtx, 0x66)) {
actionIndex = Cutscene_GetActorActionIndex(globalCtx, 0x66);
if (globalCtx->csCtx.frames == globalCtx->csCtx.actorActions[actionIndex]->startFrame) {
s16 nextAnimationIndex = ZELDA_ANIM_FACING_AWAY;
switch (globalCtx->csCtx.actorActions[actionIndex]->action) {
default:
case 1:
break;
case 2:
nextAnimationIndex = ZELDA_ANIM_TURNING_TOWARD_PLAYER;
break;
case 3:
nextAnimationIndex = ZELDA_ANIM_GIVING_OCARINA_START;
break;
case 4:
nextAnimationIndex = ZELDA_ANIM_PLAYING_OCARINA_START;
break;
}
if (nextAnimationIndex != this->animationIndex) {
this->animationIndex = nextAnimationIndex;
DmZl_ChangeAnimation(&this->skelAnime, &sAnimations[this->animationIndex], 0);
}
}
Cutscene_ActorTranslateAndYaw(&this->actor, globalCtx, actionIndex);
}
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
actionIndex = this->animationIndex;
if ((actionIndex == ZELDA_ANIM_TURNING_TOWARD_PLAYER) || (actionIndex == ZELDA_ANIM_GIVING_OCARINA_START) ||
(actionIndex == ZELDA_ANIM_PLAYING_OCARINA_START)) {
// these animations don't loop at the end, they lead into the next animation
this->animationIndex++;
DmZl_ChangeAnimation(&this->skelAnime, &sAnimations[this->animationIndex], 0);
}
}
}
/**
* Updates the eye blinking and state, and mouth textures.
*/
void DmZl_UpdateFace(DmZl* this) {
if (this->blinkTimer > 0) {
this->blinkTimer--;
} else {
this->blinkTimer = 0;
}
if (this->blinkTimer < 3) {
this->eyeTextureIndexRight = this->blinkTimer;
this->eyeTextureIndexLeft = this->blinkTimer;
}
// nextEyeState is never changed by this actor in MM, only ZELDA_EYE_STATE_NORMAL used.
switch (this->nextEyeState) {
case ZELDA_EYE_STATE_NORMAL:
if (this->blinkTimer == 0) {
this->blinkTimer = Rand_S16Offset(30, 30);
}
break;
case ZELDA_EYE_STATE_CLOSED:
if (this->blinkTimer == 0) {
this->eyeTextureIndexLeft = this->eyeTextureIndexRight = ZELDA_EYE_CLOSED;
}
break;
case ZELDA_EYE_STATE_LOOKING_LEFT:
if (this->blinkTimer == 0) {
this->eyeTextureIndexLeft = ZELDA_EYE_OPEN_LOOKING_LEFT;
this->eyeTextureIndexRight = ZELDA_EYE_OPEN_LOOKING_RIGHT;
}
break;
case ZELDA_EYE_STATE_LOOKING_RIGHT:
if (this->blinkTimer == 0) {
this->eyeTextureIndexLeft = ZELDA_EYE_OPEN_LOOKING_RIGHT;
this->eyeTextureIndexRight = ZELDA_EYE_OPEN_LOOKING_LEFT;
}
break;
case ZELDA_EYE_STATE_WIDE:
if (this->blinkTimer == 0) {
this->eyeTextureIndexLeft = this->eyeTextureIndexRight = ZELDA_EYE_WIDE;
}
break;
case ZELDA_EYE_STATE_HAPPY:
if (this->blinkTimer == 0) {
this->eyeTextureIndexLeft = this->eyeTextureIndexRight = ZELDA_EYE_HAPPY;
}
break;
case ZELDA_EYE_STATE_CLOSED2:
if (this->blinkTimer >= 3) {
this->blinkTimer = 0;
}
break;
}
// nextMouthState is never changed by this actor in MM, only ZELDA_MOUTH_NEUTRAL used.
switch (this->nextMouthState) {
default:
this->mouthTextureIndex = ZELDA_MOUTH_NEUTRAL;
break;
case ZELDA_MOUTH_SMILING:
this->mouthTextureIndex = ZELDA_MOUTH_SMILING;
break;
case ZELDA_MOUTH_FROWNING:
this->mouthTextureIndex = ZELDA_MOUTH_FROWNING;
break;
case ZELDA_MOUTH_OPEN:
this->mouthTextureIndex = ZELDA_MOUTH_OPEN;
break;
}
if (this->animationIndex == ZELDA_ANIM_PLAYING_OCARINA) {
this->eyeTextureIndexLeft = this->eyeTextureIndexRight = ZELDA_EYE_CLOSED;
}
}
void DmZl_Update(Actor* thisx, GlobalContext* globalCtx) {
DmZl* this = THIS;
DmZl_UpdateFace(this);
SkelAnime_Update(&this->skelAnime);
DmZl_UpdateCutscene(this, globalCtx);
this->actionFunc(this, globalCtx);
}
s32 DmZl_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
return false;
}
void DmZl_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
DmZl* this = THIS;
if (limbIndex == ZL4_LIMB_RIGHT_HAND) {
if ((this->animationIndex >= ZELDA_ANIM_GIVING_OCARINA_START) &&
(this->animationIndex <= ZELDA_ANIM_PLAYING_OCARINA)) {
OPEN_DISPS(globalCtx->state.gfxCtx);
gSPDisplayList(POLY_OPA_DISP++, gDmZl4OcarinaDL);
CLOSE_DISPS(globalCtx->state.gfxCtx);
}
}
}
void DmZl_Draw(Actor* thisx, GlobalContext* globalCtx) {
DmZl* this = THIS;
OPEN_DISPS(globalCtx->state.gfxCtx);
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTextureIndexRight]));
gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTextureIndexLeft]));
gSPSegment(POLY_OPA_DISP++, 0x0A, Lib_SegmentedToVirtual(sMouthTextures[this->mouthTextureIndex]));
func_8012C28C(globalCtx->state.gfxCtx);
SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
DmZl_OverrideLimbDraw, DmZl_PostLimbDraw, &this->actor);
CLOSE_DISPS(globalCtx->state.gfxCtx);
}

View File

@ -2,16 +2,28 @@
#define Z_DM_ZL_H #define Z_DM_ZL_H
#include "global.h" #include "global.h"
#include "objects/object_zl4/object_zl4.h"
struct DmZl; struct DmZl;
typedef void (*DmZlActionFunc)(struct DmZl*, GlobalContext*); typedef void (*DmZlActionFunc)(struct DmZl*, GlobalContext*);
typedef struct DmZl { typedef struct DmZl {
/* 0x0000 */ Actor actor; /* 0x000 */ Actor actor;
/* 0x0144 */ char unk_144[0x11C]; /* 0x144 */ SkelAnime skelAnime;
/* 0x0260 */ DmZlActionFunc actionFunc; /* 0x188 */ Vec3s jointTable[ZL4_LIMB_MAX]; // these tables are not referenced directly, loaded dynamically
/* 0x0264 */ char unk_264[0x70]; /* 0x1F4 */ Vec3s morphTable[ZL4_LIMB_MAX];
/* 0x260 */ DmZlActionFunc actionFunc;
/* 0x264 */ ColliderCylinder collider; // unused, assumed to be here based on OoT documentation
/* 0x2B0 */ s16 animationIndex;
/* 0x2B2 */ u8 eyeTextureIndexLeft;
/* 0x2B3 */ u8 eyeTextureIndexRight;
/* 0x2B4 */ u8 mouthTextureIndex;
/* 0x2B5 */ u8 nextEyeState; // used to control eye state, but not set by our actor, outside of actor?
/* 0x2B6 */ u8 nextMouthState; // used to control mouth state, but not set by our actor, outside of actor?
/* 0x2B8 */ s16 blinkTimer;
/* 0x2BA */ s16 unk_2BA; // set but not used by this actor.
/* 0x2BC */ UNK_TYPE1 pad2BC[0x18]; // unused by DmZl
} DmZl; // size = 0x2D4 } DmZl; // size = 0x2D4
extern const ActorInit Dm_Zl_InitVars; extern const ActorInit Dm_Zl_InitVars;

View File

@ -10244,15 +10244,15 @@
0x80A37EE0:("ObjShutter_Destroy",), 0x80A37EE0:("ObjShutter_Destroy",),
0x80A37EF0:("ObjShutter_Update",), 0x80A37EF0:("ObjShutter_Update",),
0x80A3803C:("ObjShutter_Draw",), 0x80A3803C:("ObjShutter_Draw",),
0x80A38190:("func_80A38190",), 0x80A38190:("DmZl_ChangeAnimation",),
0x80A3822C:("DmZl_Init",), 0x80A3822C:("DmZl_Init",),
0x80A382EC:("DmZl_Destroy",), 0x80A382EC:("DmZl_Destroy",),
0x80A382FC:("func_80A382FC",), 0x80A382FC:("DmZl_DoNothing",),
0x80A3830C:("func_80A3830C",), 0x80A3830C:("DmZl_UpdateCutscene",),
0x80A38468:("func_80A38468",), 0x80A38468:("DmZl_UpdateFace",),
0x80A385D4:("DmZl_Update",), 0x80A385D4:("DmZl_Update",),
0x80A3862C:("func_80A3862C",), 0x80A3862C:("DmZl_OverrideLimbDraw",),
0x80A38648:("func_80A38648",), 0x80A38648:("DmZl_PostLimbDraw",),
0x80A3869C:("DmZl_Draw",), 0x80A3869C:("DmZl_Draw",),
0x80A389A0:("func_80A389A0",), 0x80A389A0:("func_80A389A0",),
0x80A38A68:("func_80A38A68",), 0x80A38A68:("func_80A38A68",),