1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-02-13 17:07:44 +00:00

Document object_gndd (Young Ganondorf) (#1353)

This commit is contained in:
Tom Overton 2022-08-29 17:03:29 -07:00 committed by GitHub
parent f5f6f2ef6c
commit fe8d5988b9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 173 additions and 130 deletions

View file

@ -1,96 +1,106 @@
<Root> <Root>
<!-- Assets for the young version of Ganondorf (the one before the seven-year timeskip). -->
<File Name="object_gndd" Segment="6"> <File Name="object_gndd" Segment="6">
<Animation Name="object_gndd_Anim_0005B4" Offset="0x5B4"/> <!-- Young Ganondorf Animations -->
<Animation Name="object_gndd_Anim_0008A0" Offset="0x8A0"/> <Animation Name="gYoungGanondorfHorsebackRideAnim" Offset="0x5B4"/> <!-- Original name is "gnd_anim_fastrun" -->
<Animation Name="object_gndd_Anim_000BC8" Offset="0xBC8"/> <Animation Name="gYoungGanondorfHorsebackMagicChargeUpStartAnim" Offset="0x8A0"/> <!-- Original name is "gnd_anim_mahou" ("magic, sorcery") -->
<Animation Name="object_gndd_Anim_000F54" Offset="0xF54"/> <Animation Name="gYoungGanondorfHorsebackMagicChargeUpLoopAnim" Offset="0xBC8"/> <!-- Original name is "gnd_anim_mahou_wait" -->
<Animation Name="object_gndd_Anim_0014F4" Offset="0x14F4"/> <Animation Name="gYoungGanondorfHorsebackLookSidewaysStartAnim" Offset="0xF54"/> <!-- Original name is "gnd_anim_nirami" ("glare, sharp look") -->
<Animation Name="object_gndd_Anim_001D28" Offset="0x1D28"/> <Animation Name="gYoungGanondorfHorsebackLookSidewaysLoopAnim" Offset="0x14F4"/> <!-- Original name is "gnd_anim_nirami_wait" -->
<Animation Name="object_gndd_Anim_002928" Offset="0x2928"/> <Animation Name="gYoungGanondorfHorsebackRearAnim" Offset="0x1D28"/> <!-- Original name is "gnd_anim_stand" -->
<Animation Name="object_gndd_Anim_003284" Offset="0x3284"/> <Animation Name="gYoungGanondorfHorsebackIdleAnim" Offset="0x2928"/> <!-- Original name is "gnd_anim_wait" -->
<Animation Name="object_gndd_Anim_003428" Offset="0x3428"/> <Animation Name="gYoungGanondorfKneelStartAnim" Offset="0x3284"/> <!-- Original name is "gnd_demo_ojigi" ("bowing") -->
<Animation Name="object_gndd_Anim_003D84" Offset="0x3D84"/> <Animation Name="gYoungGanondorfKneelLookSidewaysAnim" Offset="0x3428"/> <!-- Original name is "gnd_demo_ojigi_furimuki" ("to turn one's face") -->
<Animation Name="object_gndd_Anim_004260" Offset="0x4260"/> <Animation Name="gYoungGanondorfKneelLoopAnim" Offset="0x3D84"/> <!-- Original name is "gnd_demo_ojigi_wait" -->
<Animation Name="object_gndd_Anim_004534" Offset="0x4534"/> <Animation Name="gYoungGanondorfArmsCrossedAnim" Offset="0x4260"/> <!-- Original name is "gnd_demo_ukabi_wait" ("to emerge (from obscurity)") -->
<Animation Name="object_gndd_Anim_0048B0" Offset="0x48B0"/> <Animation Name="gYoungGanondorfLaughStartAnim" Offset="0x4534"/> <!-- Original name is "gnd_demo_ukabi_warai" ("laughter") -->
<Animation Name="object_gndd_Anim_0050A8" Offset="0x50A8"/> <Animation Name="gYoungGanondorfLaughLoopAnim" Offset="0x48B0"/> <!-- Original name is "gnd_demo_ukabi_warai_wait" -->
<DList Name="object_gndd_DL_0061C0" Offset="0x61C0"/> <Animation Name="gYoungGanondorfWalkAnim" Offset="0x50A8"/> <!-- Original name is "gnd_walk" -->
<DList Name="object_gndd_DL_0069F8" Offset="0x69F8"/>
<DList Name="object_gndd_DL_006B78" Offset="0x6B78"/> <!-- Young Ganondorf Limb DisplayLists -->
<DList Name="object_gndd_DL_006D90" Offset="0x6D90"/> <DList Name="gYoungGanondorfHeadDL" Offset="0x61C0"/>
<DList Name="object_gndd_DL_006FC8" Offset="0x6FC8"/> <DList Name="gYoungGanondorfRightUpperLipDL" Offset="0x69F8"/>
<DList Name="object_gndd_DL_00A6A8" Offset="0xA6A8"/> <DList Name="gYoungGanondorfChinDL" Offset="0x6B78"/>
<DList Name="object_gndd_DL_00AB10" Offset="0xAB10"/> <DList Name="gYoungGanondorfJawDL" Offset="0x6D90"/>
<DList Name="object_gndd_DL_00B410" Offset="0xB410"/> <DList Name="gYoungGanondorfLeftUpperLipDL" Offset="0x6FC8"/>
<DList Name="object_gndd_DL_00B4B0" Offset="0xB4B0"/> <DList Name="gYoungGanondorfPelvisDL" Offset="0xA6A8"/>
<DList Name="object_gndd_DL_00B918" Offset="0xB918"/> <DList Name="gYoungGanondorfTorsoDL" Offset="0xAB10"/>
<DList Name="object_gndd_DL_00BA90" Offset="0xBA90"/> <DList Name="gYoungGanondorfJewelDL" Offset="0xB410"/>
<DList Name="object_gndd_DL_00BC08" Offset="0xBC08"/> <DList Name="gYoungGanondorfKnifeDL" Offset="0xB4B0"/>
<DList Name="object_gndd_DL_00BEA0" Offset="0xBEA0"/> <DList Name="gYoungGanondorfLeftUpperArmDL" Offset="0xB918"/>
<DList Name="object_gndd_DL_00C138" Offset="0xC138"/> <DList Name="gYoungGanondorfRightUpperArmDL" Offset="0xBA90"/>
<DList Name="object_gndd_DL_00C550" Offset="0xC550"/> <DList Name="gYoungGanondorfLeftForearmDL" Offset="0xBC08"/>
<DList Name="object_gndd_DL_00C968" Offset="0xC968"/> <DList Name="gYoungGanondorfRightForearmDL" Offset="0xBEA0"/>
<DList Name="object_gndd_DL_00CBF8" Offset="0xCBF8"/> <DList Name="gYoungGanondorfLeftHandDL" Offset="0xC138"/>
<DList Name="object_gndd_DL_00CE88" Offset="0xCE88"/> <DList Name="gYoungGanondorfRightHandDL" Offset="0xC550"/>
<DList Name="object_gndd_DL_00D080" Offset="0xD080"/> <DList Name="gYoungGanondorfLeftFootDL" Offset="0xC968"/>
<DList Name="object_gndd_DL_00D278" Offset="0xD278"/> <DList Name="gYoungGanondorfRightFootDL" Offset="0xCBF8"/>
<DList Name="object_gndd_DL_00D470" Offset="0xD470"/> <DList Name="gYoungGanondorfLeftThighDL" Offset="0xCE88"/>
<DList Name="object_gndd_DL_00D668" Offset="0xD668"/> <DList Name="gYoungGanondorfLeftShinDL" Offset="0xD080"/>
<DList Name="object_gndd_DL_00E1A8" Offset="0xE1A8"/> <DList Name="gYoungGanondorfRightThighDL" Offset="0xD278"/>
<Texture Name="object_gndd_TLUT_00ECB8" OutName="tlut_0000ECB8" Format="rgba16" Width="16" Height="16" Offset="0xECB8"/> <DList Name="gYoungGanondorfRightShinDL" Offset="0xD470"/>
<Texture Name="object_gndd_Tex_00EEB8" OutName="tex_0000EEB8" Format="rgba16" Width="8" Height="8" Offset="0xEEB8"/> <DList Name="gYoungGanondorfTeethDL" Offset="0xD668"/>
<Texture Name="object_gndd_Tex_00EF38" OutName="tex_0000EF38" Format="rgba16" Width="16" Height="16" Offset="0xEF38"/> <DList Name="gYoungGanondorfOpenLeftHandDL" Offset="0xE1A8"/>
<Texture Name="object_gndd_Tex_00F138" OutName="tex_0000F138" Format="rgba16" Width="4" Height="8" Offset="0xF138"/>
<Texture Name="object_gndd_Tex_00F178" OutName="tex_0000F178" Format="ci8" Width="32" Height="16" Offset="0xF178" TlutOffset="0xECB8"/> <!-- Young Ganondorf Textures -->
<Texture Name="object_gndd_Tex_00F378" OutName="tex_0000F378" Format="ci8" Width="32" Height="16" Offset="0xF378" TlutOffset="0xECB8"/> <Texture Name="gYoungGanondorfEyeTLUT" OutName="young_ganondorf_eye_tlut" Format="rgba16" Width="16" Height="16" Offset="0xECB8"/>
<Texture Name="object_gndd_Tex_00F578" OutName="tex_0000F578" Format="ci8" Width="32" Height="16" Offset="0xF578" TlutOffset="0xECB8"/> <Texture Name="gYoungGanondorfInnerMouthTex" OutName="young_ganondorf_inner_mouth" Format="rgba16" Width="8" Height="8" Offset="0xEEB8"/>
<Texture Name="object_gndd_Tex_00F778" OutName="tex_0000F778" Format="ci8" Width="32" Height="16" Offset="0xF778" TlutOffset="0xECB8"/> <Texture Name="gYoungGanondorfSideburnTex" OutName="young_ganondorf_sideburn" Format="rgba16" Width="16" Height="16" Offset="0xEF38"/>
<Texture Name="object_gndd_Tex_00F978" OutName="tex_0000F978" Format="rgba16" Width="16" Height="16" Offset="0xF978"/> <Texture Name="gYoungGanondorfOuterMouthTex" OutName="young_ganondorf_outer_mouth" Format="rgba16" Width="4" Height="8" Offset="0xF138"/>
<Texture Name="object_gndd_Tex_00FB78" OutName="tex_0000FB78" Format="rgba16" Width="8" Height="16" Offset="0xFB78"/> <Texture Name="gYoungGanondorfEyeOpenTex" OutName="young_ganondorf_eye_open" Format="ci8" Width="32" Height="16" Offset="0xF178" TlutOffset="0xECB8"/>
<Texture Name="object_gndd_Tex_00FC78" OutName="tex_0000FC78" Format="rgba16" Width="8" Height="8" Offset="0xFC78"/> <Texture Name="gYoungGanondorfEyeHalfTex" OutName="young_ganondorf_eye_half" Format="ci8" Width="32" Height="16" Offset="0xF378" TlutOffset="0xECB8"/>
<Texture Name="object_gndd_Tex_00FCF8" OutName="tex_0000FCF8" Format="rgba16" Width="4" Height="16" Offset="0xFCF8"/> <Texture Name="gYoungGanondorfEyeClosedTex" OutName="young_ganondorf_eye_closed" Format="ci8" Width="32" Height="16" Offset="0xF578" TlutOffset="0xECB8"/>
<Texture Name="object_gndd_Tex_00FD78" OutName="tex_0000FD78" Format="rgba16" Width="16" Height="8" Offset="0xFD78"/> <Texture Name="gYoungGanondorfEyeLookingDownTex" OutName="young_ganondorf_eye_looking_down" Format="ci8" Width="32" Height="16" Offset="0xF778" TlutOffset="0xECB8"/>
<Texture Name="object_gndd_Tex_00FE78" OutName="tex_0000FE78" Format="rgba16" Width="16" Height="16" Offset="0xFE78"/> <Texture Name="gYoungGanondorfUpperLipTex" OutName="young_ganondorf_upper_lip" Format="rgba16" Width="16" Height="16" Offset="0xF978"/>
<Texture Name="object_gndd_Tex_010078" OutName="tex_00010078" Format="rgba16" Width="16" Height="16" Offset="0x10078"/> <Texture Name="gYoungGanondorfEarTex" OutName="young_ganondorf_ear" Format="rgba16" Width="8" Height="16" Offset="0xFB78"/>
<Texture Name="object_gndd_Tex_010278" OutName="tex_00010278" Format="rgba16" Width="32" Height="16" Offset="0x10278"/> <Texture Name="gYoungGanondorfNoseTex" OutName="young_ganondorf_nose" Format="rgba16" Width="8" Height="8" Offset="0xFC78"/>
<Texture Name="object_gndd_Tex_010678" OutName="tex_00010678" Format="rgba16" Width="16" Height="16" Offset="0x10678"/> <Texture Name="gYoungGanondorfNoseBridgeTex" OutName="young_ganondorf_nose_bridge" Format="rgba16" Width="4" Height="16" Offset="0xFCF8"/>
<Texture Name="object_gndd_Tex_010878" OutName="tex_00010878" Format="rgba16" Width="8" Height="8" Offset="0x10878"/> <Texture Name="gYoungGanondorfEyebrowTex" OutName="young_ganondorf_eyebrow" Format="rgba16" Width="16" Height="8" Offset="0xFD78"/>
<Texture Name="object_gndd_Tex_0108F8" OutName="tex_000108F8" Format="rgba16" Width="8" Height="8" Offset="0x108F8"/> <Texture Name="gYoungGanondorfJawTex" OutName="young_ganondorf_jaw" Format="rgba16" Width="16" Height="16" Offset="0xFE78"/>
<Texture Name="object_gndd_Tex_010978" OutName="tex_00010978" Format="rgba16" Width="16" Height="16" Offset="0x10978"/> <Texture Name="gYoungGanondorfBlackLeatherTex" OutName="young_ganondorf_black_leather" Format="rgba16" Width="16" Height="16" Offset="0x10078"/>
<Texture Name="object_gndd_Tex_010B78" OutName="tex_00010B78" Format="rgba16" Width="16" Height="16" Offset="0x10B78"/> <Texture Name="gYoungGanondorfGerudoFabricWithSunTex" OutName="young_ganondorf_gerudo_fabric_with_sun" Format="rgba16" Width="32" Height="16" Offset="0x10278"/>
<Texture Name="object_gndd_Tex_010D78" OutName="tex_00010D78" Format="rgba16" Width="16" Height="16" Offset="0x10D78"/> <Texture Name="gYoungGanondorfLeatherTex" OutName="young_ganondorf_leather" Format="rgba16" Width="16" Height="16" Offset="0x10678"/>
<Texture Name="object_gndd_Tex_010F78" OutName="tex_00010F78" Format="rgba16" Width="16" Height="32" Offset="0x10F78"/> <Texture Name="gYoungGanondorfBodysuitTex" OutName="young_ganondorf_bodysuit" Format="rgba16" Width="8" Height="8" Offset="0x10878"/>
<Texture Name="object_gndd_Tex_011378" OutName="tex_00011378" Format="rgba16" Width="16" Height="16" Offset="0x11378"/> <Texture Name="gYoungGanondorfNeckTex" OutName="young_ganondorf_neck" Format="rgba16" Width="8" Height="8" Offset="0x108F8"/>
<Texture Name="object_gndd_Tex_011578" OutName="tex_00011578" Format="rgba16" Width="8" Height="8" Offset="0x11578"/> <Texture Name="gYoungGanondorfChestAndKnifeJewelTex" OutName="young_ganondorf_chest_and_knife_jewel" Format="rgba16" Width="16" Height="16" Offset="0x10978"/>
<Texture Name="object_gndd_Tex_0115F8" OutName="tex_000115F8" Format="rgba16" Width="8" Height="8" Offset="0x115F8"/> <Texture Name="gYoungGanondorfGerudoFabricTex" OutName="young_ganondorf_gerudo_fabric" Format="rgba16" Width="16" Height="16" Offset="0x10B78"/>
<Texture Name="object_gndd_Tex_011678" OutName="tex_00011678" Format="rgba16" Width="8" Height="8" Offset="0x11678"/> <Texture Name="gYoungGanondorfHairFringeTex" OutName="young_ganondorf_hair_fringe" Format="rgba16" Width="16" Height="16" Offset="0x10D78"/>
<Texture Name="object_gndd_Tex_0116F8" OutName="tex_000116F8" Format="rgba16" Width="4" Height="4" Offset="0x116F8"/> <Texture Name="gYoungGanondorfJewelTex" OutName="young_ganondorf_jewel" Format="rgba16" Width="16" Height="32" Offset="0x10F78"/>
<Texture Name="object_gndd_Tex_011718" OutName="tex_00011718" Format="i8" Width="16" Height="16" Offset="0x11718"/> <Texture Name="gYoungGanondorfPauldronTex" OutName="young_ganondorf_pauldron" Format="rgba16" Width="16" Height="16" Offset="0x11378"/> <!-- Also used for the sides of his gauntlets and knee guards. -->
<Texture Name="object_gndd_Tex_011818" OutName="tex_00011818" Format="rgba16" Width="4" Height="8" Offset="0x11818"/> <Texture Name="gYoungGanondorfThumbTex" OutName="young_ganondorf_thumb" Format="rgba16" Width="8" Height="8" Offset="0x11578"/>
<Texture Name="object_gndd_Tex_011858" OutName="tex_00011858" Format="rgba16" Width="4" Height="4" Offset="0x11858"/> <Texture Name="gYoungGanondorfHandSideTex" OutName="young_ganondorf_hand_side" Format="rgba16" Width="8" Height="8" Offset="0x115F8"/>
<Limb Name="object_gndd_Limb_011878" LimbType="Standard" Offset="0x11878"/> <Texture Name="gYoungGanondorfFingerTex" OutName="young_ganondorf_finger" Format="rgba16" Width="8" Height="8" Offset="0x11678"/>
<Limb Name="object_gndd_Limb_011884" LimbType="Standard" Offset="0x11884"/> <Texture Name="gYoungGanondorfTeethTex" OutName="young_ganondorf_teeth" Format="rgba16" Width="4" Height="4" Offset="0x116F8"/>
<Limb Name="object_gndd_Limb_011890" LimbType="Standard" Offset="0x11890"/> <Texture Name="gYoungGanondorfPalmMaskTex" OutName="young_ganondorf_palm_mask" Format="i8" Width="16" Height="16" Offset="0x11718"/>
<Limb Name="object_gndd_Limb_01189C" LimbType="Standard" Offset="0x1189C"/> <Texture Name="gYoungGanondorfFingerUndersideTex" OutName="young_ganondorf_finger_underside" Format="rgba16" Width="4" Height="8" Offset="0x11818"/>
<Limb Name="object_gndd_Limb_0118A8" LimbType="Standard" Offset="0x118A8"/> <Texture Name="gYoungGanondorfFingernailTex" OutName="young_ganondorf_fingernail" Format="rgba16" Width="4" Height="4" Offset="0x11858"/>
<Limb Name="object_gndd_Limb_0118B4" LimbType="Standard" Offset="0x118B4"/>
<Limb Name="object_gndd_Limb_0118C0" LimbType="Standard" Offset="0x118C0"/> <!-- Young Ganondorf Limbs -->
<Limb Name="object_gndd_Limb_0118CC" LimbType="Standard" Offset="0x118CC"/> <Limb Name="gYoungGanondorfRootLimb" LimbType="Standard" Offset="0x11878"/>
<Limb Name="object_gndd_Limb_0118D8" LimbType="Standard" Offset="0x118D8"/> <Limb Name="gYoungGanondorfTorsoLimb" LimbType="Standard" Offset="0x11884"/>
<Limb Name="object_gndd_Limb_0118E4" LimbType="Standard" Offset="0x118E4"/> <Limb Name="gYoungGanondorfLeftUpperArmLimb" LimbType="Standard" Offset="0x11890"/>
<Limb Name="object_gndd_Limb_0118F0" LimbType="Standard" Offset="0x118F0"/> <Limb Name="gYoungGanondorfLeftForearmLimb" LimbType="Standard" Offset="0x1189C"/>
<Limb Name="object_gndd_Limb_0118FC" LimbType="Standard" Offset="0x118FC"/> <Limb Name="gYoungGanondorfLeftHandLimb" LimbType="Standard" Offset="0x118A8"/>
<Limb Name="object_gndd_Limb_011908" LimbType="Standard" Offset="0x11908"/> <Limb Name="gYoungGanondorfRightUpperArmLimb" LimbType="Standard" Offset="0x118B4"/>
<Limb Name="object_gndd_Limb_011914" LimbType="Standard" Offset="0x11914"/> <Limb Name="gYoungGanondorfRightForearmLimb" LimbType="Standard" Offset="0x118C0"/>
<Limb Name="object_gndd_Limb_011920" LimbType="Standard" Offset="0x11920"/> <Limb Name="gYoungGanondorfRightHandLimb" LimbType="Standard" Offset="0x118CC"/>
<Limb Name="object_gndd_Limb_01192C" LimbType="Standard" Offset="0x1192C"/> <Limb Name="gYoungGanondorfJewelLimb" LimbType="Standard" Offset="0x118D8"/>
<Limb Name="object_gndd_Limb_011938" LimbType="Standard" Offset="0x11938"/> <Limb Name="gYoungGanondorfLeftUpperLipLimb" LimbType="Standard" Offset="0x118E4"/>
<Limb Name="object_gndd_Limb_011944" LimbType="Standard" Offset="0x11944"/> <Limb Name="gYoungGanondorfJawLimb" LimbType="Standard" Offset="0x118F0"/>
<Limb Name="object_gndd_Limb_011950" LimbType="Standard" Offset="0x11950"/> <Limb Name="gYoungGanondorfChinLimb" LimbType="Standard" Offset="0x118FC"/>
<Limb Name="object_gndd_Limb_01195C" LimbType="Standard" Offset="0x1195C"/> <Limb Name="gYoungGanondorfRightUpperLipLimb" LimbType="Standard" Offset="0x11908"/>
<Limb Name="object_gndd_Limb_011968" LimbType="Standard" Offset="0x11968"/> <Limb Name="gYoungGanondorfTeethLimb" LimbType="Standard" Offset="0x11914"/>
<Limb Name="object_gndd_Limb_011974" LimbType="Standard" Offset="0x11974"/> <Limb Name="gYoungGanondorfHeadLimb" LimbType="Standard" Offset="0x11920"/>
<Limb Name="object_gndd_Limb_011980" LimbType="Standard" Offset="0x11980"/> <Limb Name="gYoungGanondorfPelvisLimb" LimbType="Standard" Offset="0x1192C"/>
<Skeleton Name="object_gndd_Skel_0119E8" Type="Flex" LimbType="Standard" Offset="0x119E8"/> <Limb Name="gYoungGanondorfLeftThighLimb" LimbType="Standard" Offset="0x11938"/>
<Limb Name="gYoungGanondorfLeftShinLimb" LimbType="Standard" Offset="0x11944"/>
<Limb Name="gYoungGanondorfLeftFootLimb" LimbType="Standard" Offset="0x11950"/>
<Limb Name="gYoungGanondorfKnifeLimb" LimbType="Standard" Offset="0x1195C"/>
<Limb Name="gYoungGanondorfRightThighLimb" LimbType="Standard" Offset="0x11968"/>
<Limb Name="gYoungGanondorfRightShinLimb" LimbType="Standard" Offset="0x11974"/>
<Limb Name="gYoungGanondorfRightFootLimb" LimbType="Standard" Offset="0x11980"/>
<!-- Young Ganondorf Skeleton -->
<Skeleton Name="gYoungGanondorfSkel" Type="Flex" LimbType="Standard" Offset="0x119E8"/>
</File> </File>
</Root> </Root>

View file

@ -58,23 +58,23 @@ static EnViewerInitData sInitData[] = {
{ OBJECT_ZL4, OBJECT_OPENING_DEMO1, 1, 0, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_ZELDA, &gChildZeldaSkel, { OBJECT_ZL4, OBJECT_OPENING_DEMO1, 1, 0, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_ZELDA, &gChildZeldaSkel,
&object_opening_demo1_Anim_000450 }, &object_opening_demo1_Anim_000450 },
/* ENVIEWER_TYPE_3_GANONDORF */ /* ENVIEWER_TYPE_3_GANONDORF */
{ OBJECT_GNDD, OBJECT_GNDD, 1, -6, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_GANONDORF, &object_gndd_Skel_0119E8, { OBJECT_GNDD, OBJECT_GNDD, 1, -6, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_GANONDORF, &gYoungGanondorfSkel,
&object_gndd_Anim_002928 }, &gYoungGanondorfHorsebackIdleAnim },
/* ENVIEWER_TYPE_4_HORSE_GANONDORF */ /* ENVIEWER_TYPE_4_HORSE_GANONDORF */
{ OBJECT_HORSE_GANON, OBJECT_HORSE_GANON, 1, 0, ENVIEWER_SHADOW_HORSE, 20, ENVIEWER_DRAW_HORSE, &gHorseGanonSkel, { OBJECT_HORSE_GANON, OBJECT_HORSE_GANON, 1, 0, ENVIEWER_SHADOW_HORSE, 20, ENVIEWER_DRAW_HORSE, &gHorseGanonSkel,
&gHorseGanonRearingAnim }, &gHorseGanonRearingAnim },
/* ENVIEWER_TYPE_5_GANONDORF */ /* ENVIEWER_TYPE_5_GANONDORF */
{ OBJECT_GNDD, OBJECT_GNDD, 1, -6, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_GANONDORF, &object_gndd_Skel_0119E8, { OBJECT_GNDD, OBJECT_GNDD, 1, -6, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_GANONDORF, &gYoungGanondorfSkel,
&object_gndd_Anim_0005B4 }, &gYoungGanondorfHorsebackRideAnim },
/* ENVIEWER_TYPE_6_HORSE_GANONDORF */ /* ENVIEWER_TYPE_6_HORSE_GANONDORF */
{ OBJECT_HORSE_GANON, OBJECT_HORSE_GANON, 1, 0, ENVIEWER_SHADOW_HORSE, 20, ENVIEWER_DRAW_HORSE, &gHorseGanonSkel, { OBJECT_HORSE_GANON, OBJECT_HORSE_GANON, 1, 0, ENVIEWER_SHADOW_HORSE, 20, ENVIEWER_DRAW_HORSE, &gHorseGanonSkel,
&gHorseGanonGallopingAnim }, &gHorseGanonGallopingAnim },
/* ENVIEWER_TYPE_7_GANONDORF */ /* ENVIEWER_TYPE_7_GANONDORF */
{ OBJECT_GNDD, OBJECT_GNDD, 1, -6, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_GANONDORF, &object_gndd_Skel_0119E8, { OBJECT_GNDD, OBJECT_GNDD, 1, -6, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_GANONDORF, &gYoungGanondorfSkel,
&object_gndd_Anim_004260 }, &gYoungGanondorfArmsCrossedAnim },
/* ENVIEWER_TYPE_8_GANONDORF */ /* ENVIEWER_TYPE_8_GANONDORF */
{ OBJECT_GNDD, OBJECT_GNDD, 1, -6, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_GANONDORF, &object_gndd_Skel_0119E8, { OBJECT_GNDD, OBJECT_GNDD, 1, -6, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_GANONDORF, &gYoungGanondorfSkel,
&object_gndd_Anim_0050A8 }, &gYoungGanondorfWalkAnim },
/* ENVIEWER_TYPE_9_GANONDORF */ /* ENVIEWER_TYPE_9_GANONDORF */
{ OBJECT_GANON, OBJECT_GANON, 1, -6, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_GANONDORF, &gGanondorfSkel, { OBJECT_GANON, OBJECT_GANON, 1, -6, ENVIEWER_SHADOW_NONE, 10, ENVIEWER_DRAW_GANONDORF, &gGanondorfSkel,
&gGanondorfEndingFloatAnim }, &gGanondorfEndingFloatAnim },
@ -282,8 +282,8 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) {
if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[1] != NULL) { if (play->csCtx.state != CS_STATE_IDLE && play->csCtx.npcActions[1] != NULL) {
if (play->csCtx.npcActions[1]->action == 2 && sTimer == 0) { if (play->csCtx.npcActions[1]->action == 2 && sTimer == 0) {
if (type == ENVIEWER_TYPE_3_GANONDORF) { if (type == ENVIEWER_TYPE_3_GANONDORF) {
if (this->skin.skelAnime.animation != &object_gndd_Anim_002928) { if (this->skin.skelAnime.animation != &gYoungGanondorfHorsebackIdleAnim) {
Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &object_gndd_Anim_002928, 1.0f); Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gYoungGanondorfHorsebackIdleAnim, 1.0f);
} }
} else if (this->skin.skelAnime.animation != &gHorseGanonIdleAnim) { } else if (this->skin.skelAnime.animation != &gHorseGanonIdleAnim) {
Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gHorseGanonIdleAnim, 1.0f); Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gHorseGanonIdleAnim, 1.0f);
@ -291,8 +291,8 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) {
} else if (play->csCtx.npcActions[1]->action == 1) { } else if (play->csCtx.npcActions[1]->action == 1) {
sTimer = 100; sTimer = 100;
if (type == ENVIEWER_TYPE_3_GANONDORF) { if (type == ENVIEWER_TYPE_3_GANONDORF) {
if (this->skin.skelAnime.animation != &object_gndd_Anim_001D28) { if (this->skin.skelAnime.animation != &gYoungGanondorfHorsebackRearAnim) {
Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &object_gndd_Anim_001D28, 1.0f); Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gYoungGanondorfHorsebackRearAnim, 1.0f);
} }
} else if (this->skin.skelAnime.animation != &gHorseGanonRearingAnim) { } else if (this->skin.skelAnime.animation != &gHorseGanonRearingAnim) {
Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gHorseGanonRearingAnim, 1.0f); Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gHorseGanonRearingAnim, 1.0f);
@ -301,44 +301,49 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) {
switch (this->state) { switch (this->state) {
case 0: case 0:
if (play->csCtx.npcActions[1]->action == 4) { if (play->csCtx.npcActions[1]->action == 4) {
Animation_MorphToPlayOnce(&this->skin.skelAnime, &object_gndd_Anim_000F54, -5.0f); Animation_MorphToPlayOnce(&this->skin.skelAnime,
&gYoungGanondorfHorsebackLookSidewaysStartAnim, -5.0f);
this->state++; this->state++;
} }
break; break;
case 1: case 1:
if (animationEnded) { if (animationEnded) {
Animation_MorphToLoop(&this->skin.skelAnime, &object_gndd_Anim_0014F4, -5.0f); Animation_MorphToLoop(&this->skin.skelAnime, &gYoungGanondorfHorsebackLookSidewaysLoopAnim,
-5.0f);
this->state++; this->state++;
} }
break; break;
case 2: case 2:
if (play->csCtx.npcActions[1]->action == 5) { if (play->csCtx.npcActions[1]->action == 5) {
Animation_MorphToPlayOnce(&this->skin.skelAnime, &object_gndd_Anim_0008A0, -5.0f); Animation_MorphToPlayOnce(&this->skin.skelAnime,
&gYoungGanondorfHorsebackMagicChargeUpStartAnim, -5.0f);
this->state++; this->state++;
} }
break; break;
case 3: case 3:
if (animationEnded) { if (animationEnded) {
Animation_MorphToLoop(&this->skin.skelAnime, &object_gndd_Anim_000BC8, -5.0f); Animation_MorphToLoop(&this->skin.skelAnime, &gYoungGanondorfHorsebackMagicChargeUpLoopAnim,
-5.0f);
this->state++; this->state++;
} }
break; break;
case 4: case 4:
if (play->csCtx.npcActions[1]->action == 11) { if (play->csCtx.npcActions[1]->action == 11) {
Animation_MorphToLoop(&this->skin.skelAnime, &object_gndd_Anim_0014F4, -20.0f); Animation_MorphToLoop(&this->skin.skelAnime, &gYoungGanondorfHorsebackLookSidewaysLoopAnim,
-20.0f);
this->state++; this->state++;
} }
break; break;
case 5: case 5:
if (play->csCtx.npcActions[1]->action == 8) { if (play->csCtx.npcActions[1]->action == 8) {
Animation_MorphToLoop(&this->skin.skelAnime, &object_gndd_Anim_002928, -15.0f); Animation_MorphToLoop(&this->skin.skelAnime, &gYoungGanondorfHorsebackIdleAnim, -15.0f);
this->state++; this->state++;
} }
break; break;
case 6: case 6:
if (play->csCtx.npcActions[1]->action == 12) { if (play->csCtx.npcActions[1]->action == 12) {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_GANON_VOICE_DEMO); Audio_PlayActorSfx2(&this->actor, NA_SE_EN_GANON_VOICE_DEMO);
Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &object_gndd_Anim_0005B4, 3.0f); Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gYoungGanondorfHorsebackRideAnim, 3.0f);
this->state++; this->state++;
} }
break; break;
@ -433,13 +438,13 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) {
play->csCtx.npcActions[1]->action == 7) { play->csCtx.npcActions[1]->action == 7) {
Audio_PlaySfxGeneral(NA_SE_EN_GANON_LAUGH, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, Audio_PlaySfxGeneral(NA_SE_EN_GANON_LAUGH, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
Animation_MorphToPlayOnce(&this->skin.skelAnime, &object_gndd_Anim_004534, -5.0f); Animation_MorphToPlayOnce(&this->skin.skelAnime, &gYoungGanondorfLaughStartAnim, -5.0f);
this->state++; this->state++;
} }
break; break;
case 1: case 1:
if (animationEnded) { if (animationEnded) {
Animation_MorphToLoop(&this->skin.skelAnime, &object_gndd_Anim_0048B0, -5.0f); Animation_MorphToLoop(&this->skin.skelAnime, &gYoungGanondorfLaughLoopAnim, -5.0f);
this->state++; this->state++;
} }
break; break;
@ -449,26 +454,26 @@ void EnViewer_UpdateImpl(EnViewer* this, PlayState* play) {
case 0: case 0:
if (play->csCtx.state != CS_STATE_IDLE) { if (play->csCtx.state != CS_STATE_IDLE) {
if (play->csCtx.npcActions[1] != NULL && play->csCtx.npcActions[1]->action == 9) { if (play->csCtx.npcActions[1] != NULL && play->csCtx.npcActions[1]->action == 9) {
Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &object_gndd_Anim_0050A8, 1.0f); Animation_PlayLoopSetSpeed(&this->skin.skelAnime, &gYoungGanondorfWalkAnim, 1.0f);
this->state++; this->state++;
} }
} }
break; break;
case 1: case 1:
if (play->csCtx.npcActions[1]->action == 10) { if (play->csCtx.npcActions[1]->action == 10) {
Animation_MorphToPlayOnce(&this->skin.skelAnime, &object_gndd_Anim_003284, -10.0f); Animation_MorphToPlayOnce(&this->skin.skelAnime, &gYoungGanondorfKneelStartAnim, -10.0f);
this->state++; this->state++;
} }
break; break;
case 2: case 2:
if (animationEnded) { if (animationEnded) {
Animation_MorphToLoop(&this->skin.skelAnime, &object_gndd_Anim_003D84, -5.0f); Animation_MorphToLoop(&this->skin.skelAnime, &gYoungGanondorfKneelLoopAnim, -5.0f);
this->state++; this->state++;
} }
break; break;
case 3: case 3:
if (play->csCtx.npcActions[1]->action == 4) { if (play->csCtx.npcActions[1]->action == 4) {
Animation_MorphToPlayOnce(&this->skin.skelAnime, &object_gndd_Anim_003428, -5.0f); Animation_MorphToPlayOnce(&this->skin.skelAnime, &gYoungGanondorfKneelLookSidewaysAnim, -5.0f);
this->state++; this->state++;
} }
break; break;
@ -490,14 +495,14 @@ s32 EnViewer_Ganondorf3OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dL
void* thisx) { void* thisx) {
if (gSaveContext.sceneLayer == 4) { if (gSaveContext.sceneLayer == 4) {
if (play->csCtx.frames >= 400) { if (play->csCtx.frames >= 400) {
if (limbIndex == 5) { if (limbIndex == YOUNG_GANONDORF_LIMB_LEFT_HAND) {
*dList = object_gndd_DL_00E1A8; *dList = gYoungGanondorfOpenLeftHandDL;
} }
} }
} else { } else {
if (play->csCtx.frames >= 1510 && play->csCtx.frames <= 1650) { if (play->csCtx.frames >= 1510 && play->csCtx.frames <= 1650) {
if (limbIndex == 5) { if (limbIndex == YOUNG_GANONDORF_LIMB_LEFT_HAND) {
*dList = object_gndd_DL_00E1A8; *dList = gYoungGanondorfOpenLeftHandDL;
} }
} }
} }
@ -518,7 +523,7 @@ void EnViewer_Ganondorf9PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList
void EnViewer_GanondorfPostLimbDrawUpdateCapeVec(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) { void EnViewer_GanondorfPostLimbDrawUpdateCapeVec(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
static Vec3f zeroVec = { 0.0f, 0.0f, 0.0f }; static Vec3f zeroVec = { 0.0f, 0.0f, 0.0f };
if (limbIndex == 15) { if (limbIndex == YOUNG_GANONDORF_LIMB_HEAD) {
Matrix_MultVec3f(&zeroVec, &sGanondorfNeckWorldPos); Matrix_MultVec3f(&zeroVec, &sGanondorfNeckWorldPos);
} }
} }
@ -536,20 +541,20 @@ void EnViewer_DrawGanondorf(EnViewer* this, PlayState* play) {
} }
if (frames + 1127 >= play->csCtx.frames) { if (frames + 1127 >= play->csCtx.frames) {
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(&object_gndd_Tex_00F178)); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(&gYoungGanondorfEyeOpenTex));
gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(&object_gndd_Tex_00F178)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(&gYoungGanondorfEyeOpenTex));
} else if (frames + 1128 >= play->csCtx.frames) { } else if (frames + 1128 >= play->csCtx.frames) {
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(&object_gndd_Tex_00F378)); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(&gYoungGanondorfEyeHalfTex));
gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(&object_gndd_Tex_00F378)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(&gYoungGanondorfEyeHalfTex));
} else if (frames + 1129 >= play->csCtx.frames) { } else if (frames + 1129 >= play->csCtx.frames) {
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(&object_gndd_Tex_00F578)); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(&gYoungGanondorfEyeClosedTex));
gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(&object_gndd_Tex_00F578)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(&gYoungGanondorfEyeClosedTex));
} else { } else {
gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(&object_gndd_Tex_00F778)); gSPSegment(POLY_OPA_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(&gYoungGanondorfEyeLookingDownTex));
gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(&object_gndd_Tex_00F778)); gSPSegment(POLY_OPA_DISP++, 0x09, SEGMENTED_TO_VIRTUAL(&gYoungGanondorfEyeLookingDownTex));
} }
} else if (type == ENVIEWER_TYPE_9_GANONDORF) { } else if (type == ENVIEWER_TYPE_9_GANONDORF) {
gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(&gGanondorfCrazedEyeTex)); gSPSegment(POLY_XLU_DISP++, 0x08, SEGMENTED_TO_VIRTUAL(&gGanondorfCrazedEyeTex));

View file

@ -58,6 +58,34 @@ typedef struct {
/* 0x30 */ u8 state; /* 0x30 */ u8 state;
} EnViewerFireEffect; // size = 0x34 } EnViewerFireEffect; // size = 0x34
typedef enum {
/* 0 */ YOUNG_GANONDORF_LIMB_NONE,
/* 1 */ YOUNG_GANONDORF_LIMB_ROOT,
/* 2 */ YOUNG_GANONDORF_LIMB_TORSO,
/* 3 */ YOUNG_GANONDORF_LIMB_LEFT_UPPER_ARM,
/* 4 */ YOUNG_GANONDORF_LIMB_LEFT_FOREARM,
/* 5 */ YOUNG_GANONDORF_LIMB_LEFT_HAND,
/* 6 */ YOUNG_GANONDORF_LIMB_RIGHT_UPPER_ARM,
/* 7 */ YOUNG_GANONDORF_LIMB_RIGHT_FOREARM,
/* 8 */ YOUNG_GANONDORF_LIMB_RIGHT_HAND,
/* 9 */ YOUNG_GANONDORF_LIMB_JEWEL,
/* 10 */ YOUNG_GANONDORF_LIMB_LEFT_UPPER_LIP,
/* 11 */ YOUNG_GANONDORF_LIMB_JAW,
/* 12 */ YOUNG_GANONDORF_LIMB_CHIN,
/* 13 */ YOUNG_GANONDORF_LIMB_RIGHT_UPPER_LIP,
/* 14 */ YOUNG_GANONDORF_LIMB_TEETH,
/* 15 */ YOUNG_GANONDORF_LIMB_HEAD,
/* 16 */ YOUNG_GANONDORF_LIMB_PELVIS,
/* 17 */ YOUNG_GANONDORF_LIMB_LEFT_THIGH,
/* 18 */ YOUNG_GANONDORF_LIMB_LEFT_SHIN,
/* 19 */ YOUNG_GANONDORF_LIMB_LEFT_FOOT,
/* 20 */ YOUNG_GANONDORF_LIMB_KNIFE,
/* 21 */ YOUNG_GANONDORF_LIMB_RIGHT_THIGH,
/* 22 */ YOUNG_GANONDORF_LIMB_RIGHT_SHIN,
/* 23 */ YOUNG_GANONDORF_LIMB_RIGHT_FOOT,
/* 24 */ YOUNG_GANONDORF_LIMB_MAX
} YoungGanondorfLimb;
typedef struct EnViewer { typedef struct EnViewer {
/* 0x0000 */ Actor actor; /* 0x0000 */ Actor actor;
/* 0x014C */ Skin skin; /* 0x014C */ Skin skin;