Merge branch 'main' into doc_pause_menu

This commit is contained in:
Dragorn421 2025-06-14 22:40:22 +02:00
commit 0fd0084e26
No known key found for this signature in database
GPG Key ID: 381AEBAF3D429335
26 changed files with 296 additions and 463 deletions

View File

@ -1,6 +1,6 @@
<Root>
<File Name="object_anubice" Segment="6">
<Skeleton Name="gAnubiceSkel" Type="Normal" LimbType="Standard" Offset="0x3990"/>
<Skeleton Name="gAnubiceSkel" Type="Normal" LimbType="Standard" LimbNone="ANUBICE_LIMB_NONE" LimbMax="ANUBICE_LIMB_MAX" EnumName="AnubiceLimb" Offset="0x3990"/>
<Animation Name="gAnubiceFallDownAnim" Offset="0x348"/>
<Animation Name="gAnubiceAttackingAnim" Offset="0x78C"/>
@ -69,20 +69,20 @@
<DList Name="object_anubice_0031A0_DL" Offset="0x31A0"/>
<DList Name="object_anubice_003288_DL" Offset="0x3288"/>
<Texture Name="object_anubice_0036A0_Tex" Format="i4" Width="32" Height="32" Offset="0x36A0"/>
<Limb Name="object_anubice_0038A0_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_0038A0" Offset="0x38A0"/>
<Limb Name="object_anubice_0038AC_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_0038AC" Offset="0x38AC"/>
<Limb Name="object_anubice_0038B8_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_0038B8" Offset="0x38B8"/>
<Limb Name="object_anubice_0038C4_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_0038C4" Offset="0x38C4"/>
<Limb Name="object_anubice_0038D0_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_0038D0" Offset="0x38D0"/>
<Limb Name="object_anubice_0038DC_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_0038DC" Offset="0x38DC"/>
<Limb Name="object_anubice_0038E8_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_0038E8" Offset="0x38E8"/>
<Limb Name="object_anubice_0038F4_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_0038F4" Offset="0x38F4"/>
<Limb Name="object_anubice_003900_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_003900" Offset="0x3900"/>
<Limb Name="object_anubice_00390C_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_00390C" Offset="0x390C"/>
<Limb Name="object_anubice_003918_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_003918" Offset="0x3918"/>
<Limb Name="object_anubice_003924_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_003924" Offset="0x3924"/>
<Limb Name="object_anubice_003930_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_003930" Offset="0x3930"/>
<Limb Name="object_anubice_00393C_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_00393C" Offset="0x393C"/>
<Limb Name="object_anubice_003948_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_ANUBICE_003948" Offset="0x3948"/>
<Limb Name="object_anubice_0038A0_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_ROOT" Offset="0x38A0"/>
<Limb Name="object_anubice_0038AC_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_BODY_ROOT" Offset="0x38AC"/>
<Limb Name="object_anubice_0038B8_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_CHEST" Offset="0x38B8"/>
<Limb Name="object_anubice_0038C4_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_ABDOMEN_ROOT" Offset="0x38C4"/>
<Limb Name="object_anubice_0038D0_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_UPPER_ABDOMEN" Offset="0x38D0"/>
<Limb Name="object_anubice_0038DC_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_LOWER_ABDOMEN" Offset="0x38DC"/>
<Limb Name="object_anubice_0038E8_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_TAIL_ROOT" Offset="0x38E8"/>
<Limb Name="object_anubice_0038F4_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_TAIL_BASE" Offset="0x38F4"/>
<Limb Name="object_anubice_003900_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_TAIL_TIP" Offset="0x3900"/>
<Limb Name="object_anubice_00390C_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_JEWEL_ROOT" Offset="0x390C"/>
<Limb Name="object_anubice_003918_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_JEWEL" Offset="0x3918"/>
<Limb Name="object_anubice_003924_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_HEAD_ROOT" Offset="0x3924"/>
<Limb Name="object_anubice_003930_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_HEAD" Offset="0x3930"/>
<Limb Name="object_anubice_00393C_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_JAW_ROOT" Offset="0x393C"/>
<Limb Name="object_anubice_003948_Limb" LimbType="Standard" EnumName="ANUBICE_LIMB_JAW" Offset="0x3948"/>
</File>
</Root>

View File

@ -34,10 +34,10 @@
<Texture Name="gBiriInnerHoodTex" Format="ia16" Width="16" Height="16" Offset="0x5608"/>
<!-- Biri Limbs and Skeleton -->
<Limb Name="gBiriRootLimb" LimbType="Standard" Offset="0x5808"/>
<Limb Name="gBiriInnerHoodLimb" LimbType="Standard" Offset="0x5814"/>
<Limb Name="gBiriOuterHoodLimb" LimbType="Standard" Offset="0x5820"/>
<Limb Name="gBiriTentaclesLimb" LimbType="Standard" Offset="0x582C"/>
<Skeleton Name="gBiriSkel" Type="Normal" LimbType="Standard" Offset="0x5848"/>
<Limb Name="gBiriRootLimb" LimbType="Standard" EnumName="BIRI_LIMB_ROOT" Offset="0x5808"/>
<Limb Name="gBiriInnerHoodLimb" LimbType="Standard" EnumName="BIRI_LIMB_INNER_HOOD" Offset="0x5814"/>
<Limb Name="gBiriOuterHoodLimb" LimbType="Standard" EnumName="BIRI_LIMB_OUTER_HOOD" Offset="0x5820"/>
<Limb Name="gBiriTentaclesLimb" LimbType="Standard" EnumName="BIRI_LIMB_TENTACLES" Offset="0x582C"/>
<Skeleton Name="gBiriSkel" Type="Normal" LimbType="Standard" LimbNone="BIRI_LIMB_NONE" LimbMax="BIRI_LIMB_MAX" EnumName="BiriLimb" Offset="0x5848"/>
</File>
</Root>

View File

@ -33,20 +33,20 @@
<Texture Name="gTorchSlugBody2Tex" Format="ci8" Width="32" Height="32" Offset="0x1C40" TlutOffset="0x1640"/>
<!-- Torch Slug Limbs -->
<Limb Name="gTorchSlugBodyLimb" LimbType="Standard" Offset="0x2040"/>
<Limb Name="gTorchSlugLeftEyestalkRootRootLimb" LimbType="Standard" Offset="0x204C"/>
<Limb Name="gTorchSlugLeftEyestalkRootLimb" LimbType="Standard" Offset="0x2058"/>
<Limb Name="gTorchSlugLeftUpperEyestalkRootLimb" LimbType="Standard" Offset="0x2064"/>
<Limb Name="gTorchSlugLeftUpperEyestalkLimb" LimbType="Standard" Offset="0x2070"/>
<Limb Name="gTorchSlugLeftLowerEyestalkLimb" LimbType="Standard" Offset="0x207C"/>
<Limb Name="gTorchSlugRightEyestalkRootRootLimb" LimbType="Standard" Offset="0x2088"/>
<Limb Name="gTorchSlugRightEyestalkRootLimb" LimbType="Standard" Offset="0x2094"/>
<Limb Name="gTorchSlugRightUpperEyestalkRootLimb" LimbType="Standard" Offset="0x20A0"/>
<Limb Name="gTorchSlugRightUpperEyestalkLimb" LimbType="Standard" Offset="0x20AC"/>
<Limb Name="gTorchSlugRightLowerEyestalkLimb" LimbType="Standard" Offset="0x20B8"/>
<Limb Name="gTorchSlugBodyLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_BODY" Offset="0x2040"/>
<Limb Name="gTorchSlugLeftEyestalkRootRootLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_LEFT_EYESTALK_ROOT_ROOT" Offset="0x204C"/>
<Limb Name="gTorchSlugLeftEyestalkRootLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_LEFT_EYESTALK_ROOT" Offset="0x2058"/>
<Limb Name="gTorchSlugLeftUpperEyestalkRootLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_LEFT_UPPER_EYESTALK_ROOT" Offset="0x2064"/>
<Limb Name="gTorchSlugLeftUpperEyestalkLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_LEFT_UPPER_EYESTALK" Offset="0x2070"/>
<Limb Name="gTorchSlugLeftLowerEyestalkLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_LEFT_LOWER_EYESTALK" Offset="0x207C"/>
<Limb Name="gTorchSlugRightEyestalkRootRootLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_RIGHT_EYESTALK_ROOT_ROOT" Offset="0x2088"/>
<Limb Name="gTorchSlugRightEyestalkRootLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_RIGHT_EYESTALK_ROOT" Offset="0x2094"/>
<Limb Name="gTorchSlugRightUpperEyestalkRootLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_RIGHT_UPPER_EYESTALK_ROOT" Offset="0x20A0"/>
<Limb Name="gTorchSlugRightUpperEyestalkLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_RIGHT_UPPER_EYESTALK" Offset="0x20AC"/>
<Limb Name="gTorchSlugRightLowerEyestalkLimb" LimbType="Standard" EnumName="TORCH_SLUG_LIMB_RIGHT_LOWER_EYESTALK" Offset="0x20B8"/>
<!-- Torch Slug Skeleton -->
<Skeleton Name="gTorchSlugSkel" Type="Normal" LimbType="Standard" Offset="0x20F0"/>
<Skeleton Name="gTorchSlugSkel" Type="Normal" LimbType="Standard" LimbNone="TORCH_SLUG_LIMB_NONE" LimbMax="TORCH_SLUG_LIMB_MAX" EnumName="TorchSlugLimb" Offset="0x20F0"/>
<!-- Torch Slug Animations -->
<Animation Name="gTorchSlugEyestalkRaiseAnim" Offset="0x21A0"/> <!-- Original name is "bw_hakken" ("discovery; detection"). Used for when the Torch Slug spots the player. -->

View File

@ -35,22 +35,22 @@
<Texture Name="gWindmillManMouthAngryTex" Format="ci8" Width="32" Height="16" Offset="0x6920" TlutOffset="0x4E60"/>
<Texture Name="gWindmillManHairTex" Format="ci8" Width="8" Height="16" Offset="0x6B20" TlutOffset="0x4E60"/>
<Skeleton Name="gWindmillManSkel" Type="Flex" LimbType="Standard" Offset="0x6C90"/>
<Limb Name="gWindmillManTorsoLimb" LimbType="Standard" Offset="0x6BA0"/>
<Limb Name="gWindmillManLeftThighLimb" LimbType="Standard" Offset="0x6BAC"/>
<Limb Name="gWindmillManLeftLegLimb" LimbType="Standard" Offset="0x6BB8"/>
<Limb Name="gWindmillManLeftFootLimb" LimbType="Standard" Offset="0x6BC4"/>
<Limb Name="gWindmillManRightThighLimb" LimbType="Standard" Offset="0x6BD0"/>
<Limb Name="gWindmillManRightLegLimb" LimbType="Standard" Offset="0x6BDC"/>
<Limb Name="gWindmillManRightFootLimb" LimbType="Standard" Offset="0x6BE8"/>
<Limb Name="gWindmillManChestAndMusicBoxPipeLimb" LimbType="Standard" Offset="0x6BF4"/>
<Limb Name="gWindmillManLeftArmAndMusicBoxLimb" LimbType="Standard" Offset="0x6C00"/>
<Limb Name="gWindmillManLimb_006C0C" LimbType="Standard" Offset="0x6C0C"/> <!--A random triangle near the right side of the music box-->
<Limb Name="gWindmillManRightShoulderLimb" LimbType="Standard" Offset="0x6C18"/>
<Limb Name="gWindmillManRightArmLimb" LimbType="Standard" Offset="0x6C24"/>
<Limb Name="gWindmillManRightHandAndCrankLimb" LimbType="Standard" Offset="0x6C30"/>
<Limb Name="gWindmillManHeadLimb" LimbType="Standard" Offset="0x6C3C"/>
<Limb Name="gWindmillManHornLimb" LimbType="Standard" Offset="0x6C48"/>
<Skeleton Name="gWindmillManSkel" Type="Flex" LimbType="Standard" LimbNone="WINDMILL_MAN_LIMB_NONE" LimbMax="WINDMILL_MAN_LIMB_MAX" EnumName="WindmillManLimb" Offset="0x6C90"/>
<Limb Name="gWindmillManTorsoLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_TORSO" Offset="0x6BA0"/>
<Limb Name="gWindmillManLeftThighLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_LEFT_THIGH" Offset="0x6BAC"/>
<Limb Name="gWindmillManLeftLegLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_LEFT_LEG" Offset="0x6BB8"/>
<Limb Name="gWindmillManLeftFootLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_LEFT_FOOT" Offset="0x6BC4"/>
<Limb Name="gWindmillManRightThighLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_RIGHT_THIGH" Offset="0x6BD0"/>
<Limb Name="gWindmillManRightLegLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_RIGHT_LEG" Offset="0x6BDC"/>
<Limb Name="gWindmillManRightFootLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_RIGHT_FOOT" Offset="0x6BE8"/>
<Limb Name="gWindmillManChestAndMusicBoxPipeLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_CHEST_MUSIC_BOX" Offset="0x6BF4"/>
<Limb Name="gWindmillManLeftArmAndMusicBoxLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_LEFT_ARM_MUSIC_BOX" Offset="0x6C00"/>
<Limb Name="gWindmillManLimb_006C0C" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_UNK" Offset="0x6C0C"/> <!--A random triangle near the right side of the music box-->
<Limb Name="gWindmillManRightShoulderLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_RIGHT_SHOULDER" Offset="0x6C18"/>
<Limb Name="gWindmillManRightArmLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_RIGHT_ARM" Offset="0x6C24"/>
<Limb Name="gWindmillManRightHandAndCrankLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_RIGHT_HAND_AND_CRANK" Offset="0x6C30"/>
<Limb Name="gWindmillManHeadLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_HEAD" Offset="0x6C3C"/>
<Limb Name="gWindmillManHornLimb" LimbType="Standard" EnumName="WINDMILL_MAN_LIMB_HORN" Offset="0x6C48"/>
<Array Name="gWindmillManBlueTriangleVtx" Count="3" Offset="0xB20">
<Vtx/>

View File

@ -2,24 +2,24 @@
<File Name="object_ge1" Segment="6">
<!-- White-clothed Gerudo Skeleton -->
<Skeleton Name="gGerudoWhiteSkel" Type="Flex" LimbType="Standard" Offset="0x0330"/>
<Skeleton Name="gGerudoWhiteSkel" Type="Flex" LimbType="Standard" LimbNone="GERUDO_WHITE_LIMB_NONE" LimbMax="GERUDO_WHITE_LIMB_MAX" EnumName="GerudoWhiteLimb" Offset="0x0330"/>
<!-- White-clothed Gerudo Limbs -->
<Limb Name="gGerudoWhiteWaistLimb" LimbType="Standard" Offset="0x0240"/>
<Limb Name="gGerudoWhiteLeftThighLimb" LimbType="Standard" Offset="0x024C"/>
<Limb Name="gGerudoWhiteLeftShinLimb" LimbType="Standard" Offset="0x0258"/>
<Limb Name="gGerudoWhiteLeftFootLimb" LimbType="Standard" Offset="0x0264"/>
<Limb Name="gGerudoWhiteRightThighLimb" LimbType="Standard" Offset="0x0270"/>
<Limb Name="gGerudoWhiteRightShinLimb" LimbType="Standard" Offset="0x027C"/>
<Limb Name="gGerudoWhiteRightFootLimb" LimbType="Standard" Offset="0x0288"/>
<Limb Name="gGerudoWhiteTorsoLimb" LimbType="Standard" Offset="0x0294"/>
<Limb Name="gGerudoWhiteLeftUpperArmLimb" LimbType="Standard" Offset="0x02A0"/>
<Limb Name="gGerudoWhiteLeftForearmLimb" LimbType="Standard" Offset="0x02AC"/>
<Limb Name="gGerudoWhiteLeftHandLimb" LimbType="Standard" Offset="0x02B8"/>
<Limb Name="gGerudoWhiteRightUpperArmLimb" LimbType="Standard" Offset="0x02C4"/>
<Limb Name="gGerudoWhiteRightForearmLimb" LimbType="Standard" Offset="0x02D0"/>
<Limb Name="gGerudoWhiteRightHandLimb" LimbType="Standard" Offset="0x02DC"/>
<Limb Name="gGerudoWhiteHeadLimb" LimbType="Standard" Offset="0x02E8"/>
<Limb Name="gGerudoWhiteWaistLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_WAIST" Offset="0x0240"/>
<Limb Name="gGerudoWhiteLeftThighLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_L_THIGH" Offset="0x024C"/>
<Limb Name="gGerudoWhiteLeftShinLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_L_SHIN" Offset="0x0258"/>
<Limb Name="gGerudoWhiteLeftFootLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_L_FOOT" Offset="0x0264"/>
<Limb Name="gGerudoWhiteRightThighLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_R_THIGH" Offset="0x0270"/>
<Limb Name="gGerudoWhiteRightShinLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_R_SHIN" Offset="0x027C"/>
<Limb Name="gGerudoWhiteRightFootLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_R_FOOT" Offset="0x0288"/>
<Limb Name="gGerudoWhiteTorsoLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_TORSO" Offset="0x0294"/>
<Limb Name="gGerudoWhiteLeftUpperArmLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_L_UPPER_ARM" Offset="0x02A0"/>
<Limb Name="gGerudoWhiteLeftForearmLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_L_FOREARM" Offset="0x02AC"/>
<Limb Name="gGerudoWhiteLeftHandLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_L_HAND" Offset="0x02B8"/>
<Limb Name="gGerudoWhiteRightUpperArmLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_R_UPPER_ARM" Offset="0x02C4"/>
<Limb Name="gGerudoWhiteRightForearmLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_R_FOREARM" Offset="0x02D0"/>
<Limb Name="gGerudoWhiteRightHandLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_R_HAND" Offset="0x02DC"/>
<Limb Name="gGerudoWhiteHeadLimb" LimbType="Standard" EnumName="GERUDO_WHITE_LIMB_HEAD" Offset="0x02E8"/>
<!-- White-clothed Gerudo Limb DisplayLists -->
<DList Name="gGerudoWhiteWaistDL" Offset="0x69E0"/>

View File

@ -1,7 +1,7 @@
<Root>
<File Name="object_geldb" Segment="6">
<!-- Red-clothed Gerudo skeleton -->
<Skeleton Name="gGerudoRedSkel" Type="Flex" LimbType="Standard" Offset="0xA458"/>
<Skeleton Name="gGerudoRedSkel" Type="Flex" LimbType="Standard" LimbNone="GERUDO_RED_LIMB_NONE" LimbMax="GERUDO_RED_LIMB_MAX" EnumName="GerudoRedLimb" Offset="0xA458"/>
<!-- Red-clothed Gerudo animations -->
<Animation Name="gGerudoRedJumpAnim" Offset="0xADF8"/>
@ -120,28 +120,28 @@
<DList Name="object_geldb_0099A8_DL" Offset="0x99A8"/>
<DList Name="object_geldb_009A60_DL" Offset="0x9A60"/>
<DList Name="object_geldb_009B50_DL" Offset="0x9B50"/>
<Limb Name="object_geldb_00A2E8_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A2E8" Offset="0xA2E8"/>
<Limb Name="object_geldb_00A2F4_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A2F4" Offset="0xA2F4"/>
<Limb Name="object_geldb_00A300_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A300" Offset="0xA300"/>
<Limb Name="object_geldb_00A30C_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A30C" Offset="0xA30C"/>
<Limb Name="object_geldb_00A318_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A318" Offset="0xA318"/>
<Limb Name="object_geldb_00A324_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A324" Offset="0xA324"/>
<Limb Name="object_geldb_00A330_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A330" Offset="0xA330"/>
<Limb Name="object_geldb_00A33C_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A33C" Offset="0xA33C"/>
<Limb Name="object_geldb_00A348_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A348" Offset="0xA348"/>
<Limb Name="object_geldb_00A354_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A354" Offset="0xA354"/>
<Limb Name="object_geldb_00A360_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A360" Offset="0xA360"/>
<Limb Name="object_geldb_00A36C_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A36C" Offset="0xA36C"/>
<Limb Name="object_geldb_00A378_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A378" Offset="0xA378"/>
<Limb Name="object_geldb_00A384_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A384" Offset="0xA384"/>
<Limb Name="object_geldb_00A390_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A390" Offset="0xA390"/>
<Limb Name="object_geldb_00A39C_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A39C" Offset="0xA39C"/>
<Limb Name="object_geldb_00A3A8_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A3A8" Offset="0xA3A8"/>
<Limb Name="object_geldb_00A3B4_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A3B4" Offset="0xA3B4"/>
<Limb Name="object_geldb_00A3C0_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A3C0" Offset="0xA3C0"/>
<Limb Name="object_geldb_00A3CC_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A3CC" Offset="0xA3CC"/>
<Limb Name="object_geldb_00A3D8_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A3D8" Offset="0xA3D8"/>
<Limb Name="object_geldb_00A3E4_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A3E4" Offset="0xA3E4"/>
<Limb Name="object_geldb_00A3F0_Limb" LimbType="Standard" EnumName="LIMB_OBJECT_GELDB_00A3F0" Offset="0xA3F0"/>
<Limb Name="object_geldb_00A2E8_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_ROOT" Offset="0xA2E8"/>
<Limb Name="object_geldb_00A2F4_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_TORSO" Offset="0xA2F4"/>
<Limb Name="object_geldb_00A300_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_NECK" Offset="0xA300"/>
<Limb Name="object_geldb_00A30C_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_PONYTAIL" Offset="0xA30C"/>
<Limb Name="object_geldb_00A318_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_VEIL" Offset="0xA318"/>
<Limb Name="object_geldb_00A324_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_HEAD" Offset="0xA324"/>
<Limb Name="object_geldb_00A330_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_R_UPPER_ARM" Offset="0xA330"/>
<Limb Name="object_geldb_00A33C_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_R_FOREARM" Offset="0xA33C"/>
<Limb Name="object_geldb_00A348_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_R_WRIST" Offset="0xA348"/>
<Limb Name="object_geldb_00A354_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_R_HAND" Offset="0xA354"/>
<Limb Name="object_geldb_00A360_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_R_SWORD" Offset="0xA360"/>
<Limb Name="object_geldb_00A36C_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_L_UPPER_ARM" Offset="0xA36C"/>
<Limb Name="object_geldb_00A378_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_L_FOREARM" Offset="0xA378"/>
<Limb Name="object_geldb_00A384_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_L_WRIST" Offset="0xA384"/>
<Limb Name="object_geldb_00A390_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_L_HAND" Offset="0xA390"/>
<Limb Name="object_geldb_00A39C_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_L_SWORD" Offset="0xA39C"/>
<Limb Name="object_geldb_00A3A8_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_L_THIGH" Offset="0xA3A8"/>
<Limb Name="object_geldb_00A3B4_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_L_SHIN" Offset="0xA3B4"/>
<Limb Name="object_geldb_00A3C0_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_L_FOOT" Offset="0xA3C0"/>
<Limb Name="object_geldb_00A3CC_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_R_THIGH" Offset="0xA3CC"/>
<Limb Name="object_geldb_00A3D8_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_R_SHIN" Offset="0xA3D8"/>
<Limb Name="object_geldb_00A3E4_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_R_FOOT" Offset="0xA3E4"/>
<Limb Name="object_geldb_00A3F0_Limb" LimbType="Standard" EnumName="GERUDO_RED_LIMB_WAIST" Offset="0xA3F0"/>
</File>
</Root>

View File

@ -145,31 +145,31 @@
<Texture Name="gYoungGanondorfFingernailTex" Format="rgba16" Width="4" Height="4" Offset="0x11858"/>
<!-- Young Ganondorf Limbs -->
<Limb Name="gYoungGanondorfRootLimb" LimbType="Standard" Offset="0x11878"/>
<Limb Name="gYoungGanondorfTorsoLimb" LimbType="Standard" Offset="0x11884"/>
<Limb Name="gYoungGanondorfLeftUpperArmLimb" LimbType="Standard" Offset="0x11890"/>
<Limb Name="gYoungGanondorfLeftForearmLimb" LimbType="Standard" Offset="0x1189C"/>
<Limb Name="gYoungGanondorfLeftHandLimb" LimbType="Standard" Offset="0x118A8"/>
<Limb Name="gYoungGanondorfRightUpperArmLimb" LimbType="Standard" Offset="0x118B4"/>
<Limb Name="gYoungGanondorfRightForearmLimb" LimbType="Standard" Offset="0x118C0"/>
<Limb Name="gYoungGanondorfRightHandLimb" LimbType="Standard" Offset="0x118CC"/>
<Limb Name="gYoungGanondorfJewelLimb" LimbType="Standard" Offset="0x118D8"/>
<Limb Name="gYoungGanondorfLeftUpperLipLimb" LimbType="Standard" Offset="0x118E4"/>
<Limb Name="gYoungGanondorfJawLimb" LimbType="Standard" Offset="0x118F0"/>
<Limb Name="gYoungGanondorfChinLimb" LimbType="Standard" Offset="0x118FC"/>
<Limb Name="gYoungGanondorfRightUpperLipLimb" LimbType="Standard" Offset="0x11908"/>
<Limb Name="gYoungGanondorfTeethLimb" LimbType="Standard" Offset="0x11914"/>
<Limb Name="gYoungGanondorfHeadLimb" LimbType="Standard" Offset="0x11920"/>
<Limb Name="gYoungGanondorfPelvisLimb" LimbType="Standard" Offset="0x1192C"/>
<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"/>
<Limb Name="gYoungGanondorfRootLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_ROOT" Offset="0x11878"/>
<Limb Name="gYoungGanondorfTorsoLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_TORSO" Offset="0x11884"/>
<Limb Name="gYoungGanondorfLeftUpperArmLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_LEFT_UPPER_ARM" Offset="0x11890"/>
<Limb Name="gYoungGanondorfLeftForearmLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_LEFT_FOREARM" Offset="0x1189C"/>
<Limb Name="gYoungGanondorfLeftHandLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_LEFT_HAND" Offset="0x118A8"/>
<Limb Name="gYoungGanondorfRightUpperArmLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_RIGHT_UPPER_ARM" Offset="0x118B4"/>
<Limb Name="gYoungGanondorfRightForearmLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_RIGHT_FOREARM" Offset="0x118C0"/>
<Limb Name="gYoungGanondorfRightHandLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_RIGHT_HAND" Offset="0x118CC"/>
<Limb Name="gYoungGanondorfJewelLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_JEWEL" Offset="0x118D8"/>
<Limb Name="gYoungGanondorfLeftUpperLipLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_LEFT_UPPER_LIP" Offset="0x118E4"/>
<Limb Name="gYoungGanondorfJawLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_JAW" Offset="0x118F0"/>
<Limb Name="gYoungGanondorfChinLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_CHIN" Offset="0x118FC"/>
<Limb Name="gYoungGanondorfRightUpperLipLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_RIGHT_UPPER_LIP" Offset="0x11908"/>
<Limb Name="gYoungGanondorfTeethLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_TEETH" Offset="0x11914"/>
<Limb Name="gYoungGanondorfHeadLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_HEAD" Offset="0x11920"/>
<Limb Name="gYoungGanondorfPelvisLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_PELVIS" Offset="0x1192C"/>
<Limb Name="gYoungGanondorfLeftThighLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_LEFT_THIGH" Offset="0x11938"/>
<Limb Name="gYoungGanondorfLeftShinLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_LEFT_SHIN" Offset="0x11944"/>
<Limb Name="gYoungGanondorfLeftFootLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_LEFT_FOOT" Offset="0x11950"/>
<Limb Name="gYoungGanondorfKnifeLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_KNIFE" Offset="0x1195C"/>
<Limb Name="gYoungGanondorfRightThighLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_RIGHT_THIGH" Offset="0x11968"/>
<Limb Name="gYoungGanondorfRightShinLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_RIGHT_SHIN" Offset="0x11974"/>
<Limb Name="gYoungGanondorfRightFootLimb" LimbType="Standard" EnumName="YOUNG_GANONDORF_LIMB_RIGHT_FOOT" Offset="0x11980"/>
<!-- Young Ganondorf Skeleton -->
<Skeleton Name="gYoungGanondorfSkel" Type="Flex" LimbType="Standard" Offset="0x119E8"/>
<Skeleton Name="gYoungGanondorfSkel" Type="Flex" LimbType="Standard" LimbNone="YOUNG_GANONDORF_LIMB_NONE" LimbMax="YOUNG_GANONDORF_LIMB_MAX" EnumName="YoungGanondorfLimb" Offset="0x119E8"/>
</File>
</Root>

View File

@ -7,29 +7,29 @@
<Animation Name="gFlagpoleFlapAnim" Offset="0x444"/>
<!-- Flagpole Skeleton -->
<Skeleton Name="gFlagpoleSkel" Type="Normal" LimbType="Standard" Offset="0x2FD0"/>
<Skeleton Name="gFlagpoleSkel" Type="Normal" LimbType="Standard" LimbNone="FLAGPOLE_LIMB_NONE" LimbMax="FLAGPOLE_LIMB_MAX" EnumName="FlagpoleLimb" Offset="0x2FD0"/>
<!-- Flagpole Limbs -->
<Limb Name="gFlagpolePoleBaseLimb" LimbType="Standard" Offset="0x2E90"/>
<Limb Name="gFlagpolePoleLimb" LimbType="Standard" Offset="0x2E9C"/>
<Limb Name="gFlagpoleFlag1BaseLimb" LimbType="Standard" Offset="0x2EA8"/>
<Limb Name="gFlagpoleFlag1HoistEndBaseLimb" LimbType="Standard" Offset="0x2EB4"/>
<Limb Name="gFlagpoleFlag1HoistMidBaseLimb" LimbType="Standard" Offset="0x2EC0"/>
<Limb Name="gFlagpoleFlag1FlyMidBaseLimb" LimbType="Standard" Offset="0x2ECC"/>
<Limb Name="gFlagpoleFlag1FlyEndBaseLimb" LimbType="Standard" Offset="0x2ED8"/>
<Limb Name="gFlagpoleFlag1FlyEndLimb" LimbType="Standard" Offset="0x2EE4"/>
<Limb Name="gFlagpoleFlag1FlyMidLimb" LimbType="Standard" Offset="0x2EF0"/>
<Limb Name="gFlagpoleFlag1HoistMidLimb" LimbType="Standard" Offset="0x2EFC"/>
<Limb Name="gFlagpoleFlag1HoistEndLimb" LimbType="Standard" Offset="0x2F08"/>
<Limb Name="gFlagpoleFlag2BaseLimb" LimbType="Standard" Offset="0x2F14"/>
<Limb Name="gFlagpoleFlag2HoistEndBaseLimb" LimbType="Standard" Offset="0x2F20"/>
<Limb Name="gFlagpoleFlag2HoistMidBaseLimb" LimbType="Standard" Offset="0x2F2C"/>
<Limb Name="gFlagpoleFlag2FlyMidBaseLimb" LimbType="Standard" Offset="0x2F38"/>
<Limb Name="gFlagpoleFlag2FlyEndBaseLimb" LimbType="Standard" Offset="0x2F44"/>
<Limb Name="gFlagpoleFlag2FlyEndLimb" LimbType="Standard" Offset="0x2F50"/>
<Limb Name="gFlagpoleFlag2FlyMidLimb" LimbType="Standard" Offset="0x2F5C"/>
<Limb Name="gFlagpoleFlag2HoistMidLimb" LimbType="Standard" Offset="0x2F68"/>
<Limb Name="gFlagpoleFlag2HoistEndLimb" LimbType="Standard" Offset="0x2F74"/>
<Limb Name="gFlagpolePoleBaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_POLE_BASE" Offset="0x2E90"/>
<Limb Name="gFlagpolePoleLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_POLE" Offset="0x2E9C"/>
<Limb Name="gFlagpoleFlag1BaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_1_BASE" Offset="0x2EA8"/>
<Limb Name="gFlagpoleFlag1HoistEndBaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_1_HOIST_END_BASE" Offset="0x2EB4"/>
<Limb Name="gFlagpoleFlag1HoistMidBaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_1_HOIST_MID_BASE" Offset="0x2EC0"/>
<Limb Name="gFlagpoleFlag1FlyMidBaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_1_FLY_MID_BASE" Offset="0x2ECC"/>
<Limb Name="gFlagpoleFlag1FlyEndBaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_1_FLY_END_BASE" Offset="0x2ED8"/>
<Limb Name="gFlagpoleFlag1FlyEndLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_1_FLY_END" Offset="0x2EE4"/>
<Limb Name="gFlagpoleFlag1FlyMidLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_1_FLY_MID" Offset="0x2EF0"/>
<Limb Name="gFlagpoleFlag1HoistMidLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_1_HOIST_MID" Offset="0x2EFC"/>
<Limb Name="gFlagpoleFlag1HoistEndLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_1_HOIST_END" Offset="0x2F08"/>
<Limb Name="gFlagpoleFlag2BaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_2_BASE" Offset="0x2F14"/>
<Limb Name="gFlagpoleFlag2HoistEndBaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_2_HOIST_END_BASE" Offset="0x2F20"/>
<Limb Name="gFlagpoleFlag2HoistMidBaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_2_HOIST_MID_BASE" Offset="0x2F2C"/>
<Limb Name="gFlagpoleFlag2FlyMidBaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_2_FLY_MID_BASE" Offset="0x2F38"/>
<Limb Name="gFlagpoleFlag2FlyEndBaseLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_2_FLY_END_BASE" Offset="0x2F44"/>
<Limb Name="gFlagpoleFlag2FlyEndLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_2_FLY_END" Offset="0x2F50"/>
<Limb Name="gFlagpoleFlag2FlyMidLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_2_FLY_MID" Offset="0x2F5C"/>
<Limb Name="gFlagpoleFlag2HoistMidLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_2_HOIST_MID" Offset="0x2F68"/>
<Limb Name="gFlagpoleFlag2HoistEndLimb" LimbType="Standard" EnumName="FLAGPOLE_LIMB_FLAG_2_HOIST_END" Offset="0x2F74"/>
<!-- Flagpole Vertices -->
<Array Name="gFlagpolePoleVtx" Count="39" Offset="0x2460">

View File

@ -107,23 +107,23 @@
<DList Name="gImpaRightFootDL" Offset="0xE5D0"/>
<DList Name="gImpaRightHandDL" Offset="0xE908"/>
<DList Name="gImpaHandPointingDL" Offset="0xEDE8"/>
<Limb Name="gImpaRootLimb" LimbType="Standard" Offset="0xF688"/>
<Limb Name="gImpaTorsoLimb" LimbType="Standard" Offset="0xF694"/>
<Limb Name="gImpaLeftThighLimb" LimbType="Standard" Offset="0xF6A0"/>
<Limb Name="gImpaLeftLegLimb" LimbType="Standard" Offset="0xF6AC"/>
<Limb Name="gImpaLeftFootLimb" LimbType="Standard" Offset="0xF6B8"/>
<Limb Name="gImpaRightThighLimb" LimbType="Standard" Offset="0xF6C4"/>
<Limb Name="gImpaRightLegLimb" LimbType="Standard" Offset="0xF6D0"/>
<Limb Name="gImpaRightFootLimb" LimbType="Standard" Offset="0xF6DC"/>
<Limb Name="gImpaChestLimb" LimbType="Standard" Offset="0xF6E8"/>
<Limb Name="gImpaLeftShoulderLimb" LimbType="Standard" Offset="0xF6F4"/>
<Limb Name="gImpaLeftArmLimb" LimbType="Standard" Offset="0xF700"/>
<Limb Name="gImpaLeftHandLimb" LimbType="Standard" Offset="0xF70C"/>
<Limb Name="gImpaRightShoulderLimb" LimbType="Standard" Offset="0xF718"/>
<Limb Name="gImpaRightArmLimb" LimbType="Standard" Offset="0xF724"/>
<Limb Name="gImpaRightHandLimb" LimbType="Standard" Offset="0xF730"/>
<Limb Name="gImpaHeadLimb" LimbType="Standard" Offset="0xF73C"/>
<Skeleton Name="gImpaSkel" Type="Flex" LimbType="Standard" Offset="0xF788"/>
<Limb Name="gImpaRootLimb" LimbType="Standard" EnumName="IMPA_LIMB_ROOT" Offset="0xF688"/>
<Limb Name="gImpaTorsoLimb" LimbType="Standard" EnumName="IMPA_LIMB_TORSO" Offset="0xF694"/>
<Limb Name="gImpaLeftThighLimb" LimbType="Standard" EnumName="IMPA_LIMB_LEFT_THIGH" Offset="0xF6A0"/>
<Limb Name="gImpaLeftLegLimb" LimbType="Standard" EnumName="IMPA_LIMB_LEFT_LEG" Offset="0xF6AC"/>
<Limb Name="gImpaLeftFootLimb" LimbType="Standard" EnumName="IMPA_LIMB_LEFT_FOOT" Offset="0xF6B8"/>
<Limb Name="gImpaRightThighLimb" LimbType="Standard" EnumName="IMPA_LIMB_RIGHT_THIGH" Offset="0xF6C4"/>
<Limb Name="gImpaRightLegLimb" LimbType="Standard" EnumName="IMPA_LIMB_RIGHT_LEG" Offset="0xF6D0"/>
<Limb Name="gImpaRightFootLimb" LimbType="Standard" EnumName="IMPA_LIMB_RIGHT_FOOT" Offset="0xF6DC"/>
<Limb Name="gImpaChestLimb" LimbType="Standard" EnumName="IMPA_LIMB_CHEST" Offset="0xF6E8"/>
<Limb Name="gImpaLeftShoulderLimb" LimbType="Standard" EnumName="IMPA_LIMB_LEFT_SHOULDER" Offset="0xF6F4"/>
<Limb Name="gImpaLeftArmLimb" LimbType="Standard" EnumName="IMPA_LIMB_LEFT_ARM" Offset="0xF700"/>
<Limb Name="gImpaLeftHandLimb" LimbType="Standard" EnumName="IMPA_LIMB_LEFT_HAND" Offset="0xF70C"/>
<Limb Name="gImpaRightShoulderLimb" LimbType="Standard" EnumName="IMPA_LIMB_RIGHT_SHOULDER" Offset="0xF718"/>
<Limb Name="gImpaRightArmLimb" LimbType="Standard" EnumName="IMPA_LIMB_RIGHT_ARM" Offset="0xF724"/>
<Limb Name="gImpaRightHandLimb" LimbType="Standard" EnumName="IMPA_LIMB_RIGHT_HAND" Offset="0xF730"/>
<Limb Name="gImpaHeadLimb" LimbType="Standard" EnumName="IMPA_LIMB_HEAD" Offset="0xF73C"/>
<Skeleton Name="gImpaSkel" Type="Flex" LimbType="Standard" LimbNone="IMPA_LIMB_NONE" LimbMax="IMPA_LIMB_MAX" EnumName="ImpaLimb" Offset="0xF788"/>
<Animation Name="object_im_Anim_00FB10" Offset="0xFB10"/>
<Animation Name="object_im_Anim_0101C8" Offset="0x101C8"/>
<Animation Name="gImpaStartWhistlingAnim" Offset="0x10EE0"/>

View File

@ -3593,7 +3593,7 @@ s32 Camera_KeepOn3(Camera* camera) {
playerHeadPos = camPlayerPosRot->pos;
playerHeadPos.y += playerHeight;
rwData->atTarget = Camera_AddVecGeoToVec3f(&playerHeadPos, &targetToPlayerDir);
angleCnt = ARRAY_COUNT(D_8011D3B0);
angleCnt = ARRAY_COUNT(sCamCheckAroundOffsetsYaw);
i = 0;
targetToPlayerDir.r = prevTargetPlayerDist;
atToEyeAdj.r = roData->minDist + (targetToPlayerDir.r * (1 - 0.5f)) - atToEyeNextDir.r + atToEyeNextDir.r;
@ -3605,8 +3605,8 @@ s32 Camera_KeepOn3(Camera* camera) {
!Camera_BGCheck(camera, &rwData->atTarget, &lineChkPointB)) {
break;
}
atToEyeAdj.yaw = sp80 + D_8011D3B0[i];
atToEyeAdj.pitch = sp82 + D_8011D3CC[i];
atToEyeAdj.yaw = sp80 + sCamCheckAroundOffsetsYaw[i];
atToEyeAdj.pitch = sp82 + sCamCheckAroundOffsetsPitch[i];
lineChkPointB = Camera_AddVecGeoToVec3f(&rwData->atTarget, &atToEyeAdj);
i++;
}
@ -3664,24 +3664,24 @@ s32 Camera_KeepOn3(Camera* camera) {
"ique-cn:128 ntsc-1.0:79 ntsc-1.1:79 ntsc-1.2:79 pal-1.0:79 pal-1.1:79"
s32 Camera_KeepOn4(Camera* camera) {
static Vec3f D_8015BD50;
static Vec3f sAtTarget;
static Vec3f D_8015BD60;
static Vec3f D_8015BD70;
static Vec3f sEyeCandidate;
Vec3f* eye = &camera->eye;
Vec3f* at = &camera->at;
Vec3f* eyeNext = &camera->eyeNext;
Actor* spCC[2];
Actor* lineOCCheckExclusions[2];
f32 t = -0.5f;
f32 temp_f0_2;
CollisionPoly* spC0;
VecGeo spB8;
UNUSED VecGeo spB0;
VecGeo spA8;
VecGeo vecGeo;
VecGeo atToEyeDir;
VecGeo atToEyeNextDir;
s16* itemType = &camera->data2;
s16 spA2;
s16 spA0;
s16 atToEyeBasePitch;
s16 atToEyeBaseYaw;
s16 sp9E;
s16 sp9C;
s16 lineOCCheckNumExclusions;
PosRot* playerPosRot = &camera->playerPosRot;
KeepOn4ReadOnlyData* roData = &camera->paramData.keep4.roData;
KeepOn4ReadWriteData* rwData = &camera->paramData.keep4.rwData;
@ -3839,87 +3839,87 @@ s32 Camera_KeepOn4(Camera* camera) {
sUpdateCameraDirection = 1;
sCameraInterfaceField = roData->interfaceField;
spB0 = OLib_Vec3fDiffToVecGeo(at, eye);
spA8 = OLib_Vec3fDiffToVecGeo(at, eyeNext);
D_8015BD50 = playerPosRot->pos;
D_8015BD50.y += playerHeight;
temp_f0_2 = BgCheck_CameraRaycastDown2(&camera->play->colCtx, &spC0, &i, &D_8015BD50);
if (temp_f0_2 > (roData->unk_00 + D_8015BD50.y)) {
D_8015BD50.y = temp_f0_2 + 10.0f;
atToEyeDir = OLib_Vec3fDiffToVecGeo(at, eye);
atToEyeNextDir = OLib_Vec3fDiffToVecGeo(at, eyeNext);
sAtTarget = playerPosRot->pos;
sAtTarget.y += playerHeight;
temp_f0_2 = BgCheck_CameraRaycastDown2(&camera->play->colCtx, &spC0, &i, &sAtTarget);
if (temp_f0_2 > (roData->unk_00 + sAtTarget.y)) {
sAtTarget.y = temp_f0_2 + 10.0f;
} else {
D_8015BD50.y += roData->unk_00;
sAtTarget.y += roData->unk_00;
}
sp9C = 0;
lineOCCheckNumExclusions = 0;
switch (camera->animState) {
case 0:
case 20:
spCC[sp9C] = &camera->player->actor;
sp9C++;
lineOCCheckExclusions[lineOCCheckNumExclusions] = &camera->player->actor;
lineOCCheckNumExclusions++;
func_80043ABC(camera);
camera->stateFlags &= ~(CAM_STATE_CHECK_WATER | CAM_STATE_CHECK_BG);
rwData->unk_10 = roData->unk_1E;
rwData->unk_08 = playerPosRot->pos.y - camera->playerPosDelta.y;
if (roData->interfaceField & KEEPON4_FLAG_1) {
spA2 = CAM_DEG_TO_BINANG(roData->unk_08);
spA0 = (s16)((s16)(playerPosRot->rot.y - 0x7FFF) - spA8.yaw) > 0
atToEyeBasePitch = CAM_DEG_TO_BINANG(roData->unk_08);
atToEyeBaseYaw = (s16)((s16)(playerPosRot->rot.y - 0x7FFF) - atToEyeNextDir.yaw) > 0
? (s16)(playerPosRot->rot.y - 0x7FFF) + CAM_DEG_TO_BINANG(roData->unk_0C)
: (s16)(playerPosRot->rot.y - 0x7FFF) - CAM_DEG_TO_BINANG(roData->unk_0C);
} else if (roData->interfaceField & KEEPON4_FLAG_2) {
spA2 = CAM_DEG_TO_BINANG(roData->unk_08);
spA0 = CAM_DEG_TO_BINANG(roData->unk_0C);
atToEyeBasePitch = CAM_DEG_TO_BINANG(roData->unk_08);
atToEyeBaseYaw = CAM_DEG_TO_BINANG(roData->unk_0C);
} else if ((roData->interfaceField & KEEPON4_FLAG_3) && camera->target != NULL) {
PosRot sp60;
sp60 = Actor_GetWorldPosShapeRot(camera->target);
spA2 = CAM_DEG_TO_BINANG(roData->unk_08) - sp60.rot.x;
spA0 = (s16)((s16)(sp60.rot.y - 0x7FFF) - spA8.yaw) > 0
atToEyeBasePitch = CAM_DEG_TO_BINANG(roData->unk_08) - sp60.rot.x;
atToEyeBaseYaw = (s16)((s16)(sp60.rot.y - 0x7FFF) - atToEyeNextDir.yaw) > 0
? (s16)(sp60.rot.y - 0x7FFF) + CAM_DEG_TO_BINANG(roData->unk_0C)
: (s16)(sp60.rot.y - 0x7FFF) - CAM_DEG_TO_BINANG(roData->unk_0C);
spCC[1] = camera->target;
sp9C++;
lineOCCheckExclusions[1] = camera->target;
lineOCCheckNumExclusions++;
} else if ((roData->interfaceField & KEEPON4_FLAG_7) && camera->target != NULL) {
PosRot sp4C;
sp4C = Actor_GetWorld(camera->target);
spA2 = CAM_DEG_TO_BINANG(roData->unk_08);
atToEyeBasePitch = CAM_DEG_TO_BINANG(roData->unk_08);
sp9E = Camera_XZAngle(&sp4C.pos, &playerPosRot->pos);
spA0 = ((s16)(sp9E - spA8.yaw) > 0) ? sp9E + CAM_DEG_TO_BINANG(roData->unk_0C)
atToEyeBaseYaw = ((s16)(sp9E - atToEyeNextDir.yaw) > 0) ? sp9E + CAM_DEG_TO_BINANG(roData->unk_0C)
: sp9E - CAM_DEG_TO_BINANG(roData->unk_0C);
spCC[1] = camera->target;
sp9C++;
lineOCCheckExclusions[1] = camera->target;
lineOCCheckNumExclusions++;
} else if (roData->interfaceField & KEEPON4_FLAG_6) {
spA2 = CAM_DEG_TO_BINANG(roData->unk_08);
spA0 = spA8.yaw;
atToEyeBasePitch = CAM_DEG_TO_BINANG(roData->unk_08);
atToEyeBaseYaw = atToEyeNextDir.yaw;
} else {
spA2 = spA8.pitch;
spA0 = spA8.yaw;
atToEyeBasePitch = atToEyeNextDir.pitch;
atToEyeBaseYaw = atToEyeNextDir.yaw;
}
spB8.pitch = spA2;
spB8.yaw = spA0;
spB8.r = roData->unk_04;
D_8015BD70 = Camera_AddVecGeoToVec3f(&D_8015BD50, &spB8);
vecGeo.pitch = atToEyeBasePitch;
vecGeo.yaw = atToEyeBaseYaw;
vecGeo.r = roData->unk_04;
sEyeCandidate = Camera_AddVecGeoToVec3f(&sAtTarget, &vecGeo);
if (!(roData->interfaceField & KEEPON4_FLAG_0)) {
angleCnt = ARRAY_COUNT(D_8011D3B0);
angleCnt = ARRAY_COUNT(sCamCheckAroundOffsetsYaw);
for (i = 0; i < angleCnt; i++) {
if (!CollisionCheck_LineOCCheck(camera->play, &camera->play->colChkCtx, &D_8015BD50, &D_8015BD70,
spCC, sp9C) &&
!Camera_BGCheck(camera, &D_8015BD50, &D_8015BD70)) {
if (!CollisionCheck_LineOCCheck(camera->play, &camera->play->colChkCtx, &sAtTarget, &sEyeCandidate,
lineOCCheckExclusions, lineOCCheckNumExclusions) &&
!Camera_BGCheck(camera, &sAtTarget, &sEyeCandidate)) {
break;
}
spB8.yaw = D_8011D3B0[i] + spA0;
spB8.pitch = D_8011D3CC[i] + spA2;
D_8015BD70 = Camera_AddVecGeoToVec3f(&D_8015BD50, &spB8);
vecGeo.yaw = sCamCheckAroundOffsetsYaw[i] + atToEyeBaseYaw;
vecGeo.pitch = sCamCheckAroundOffsetsPitch[i] + atToEyeBasePitch;
sEyeCandidate = Camera_AddVecGeoToVec3f(&sAtTarget, &vecGeo);
}
#if DEBUG_FEATURES
PRINTF("camera: item: BG&collision check %d time(s)\n", i);
#endif
}
rwData->unk_04 = (s16)(spB8.pitch - spA8.pitch) / (f32)rwData->unk_10;
rwData->unk_00 = (s16)(spB8.yaw - spA8.yaw) / (f32)rwData->unk_10;
rwData->unk_0C = spA8.yaw;
rwData->unk_0E = spA8.pitch;
rwData->unk_04 = (s16)(vecGeo.pitch - atToEyeNextDir.pitch) / (f32)rwData->unk_10;
rwData->unk_00 = (s16)(vecGeo.yaw - atToEyeNextDir.yaw) / (f32)rwData->unk_10;
rwData->unk_0C = atToEyeNextDir.yaw;
rwData->unk_0E = atToEyeNextDir.pitch;
camera->animState++;
rwData->unk_12 = 1;
break;
@ -3931,16 +3931,16 @@ s32 Camera_KeepOn4(Camera* camera) {
camera->xzOffsetUpdateRate = 0.25f;
camera->yOffsetUpdateRate = 0.25f;
camera->atLERPStepScale = 0.75f;
Camera_LERPCeilVec3f(&D_8015BD50, at, 0.5f, 0.5f, 0.2f);
Camera_LERPCeilVec3f(&sAtTarget, at, 0.5f, 0.5f, 0.2f);
if (roData->unk_10 != 0.0f) {
spB8.r = roData->unk_10;
spB8.pitch = 0;
spB8.yaw = playerPosRot->rot.y;
*at = Camera_AddVecGeoToVec3f(at, &spB8);
vecGeo.r = roData->unk_10;
vecGeo.pitch = 0;
vecGeo.yaw = playerPosRot->rot.y;
*at = Camera_AddVecGeoToVec3f(at, &vecGeo);
}
camera->atLERPStepScale = 0.0f;
camera->dist = Camera_LERPCeilF(roData->unk_04, camera->dist, 0.25f, 2.0f);
spB8.r = camera->dist;
vecGeo.r = camera->dist;
if (rwData->unk_10 != 0) {
camera->stateFlags |= CAM_STATE_LOCK_MODE;
rwData->unk_0C += (s16)rwData->unk_00;
@ -3967,9 +3967,9 @@ s32 Camera_KeepOn4(Camera* camera) {
}
}
}
spB8.yaw = Camera_LERPCeilS(rwData->unk_0C, spA8.yaw, roData->unk_14, 4);
spB8.pitch = Camera_LERPCeilS(rwData->unk_0E, spA8.pitch, roData->unk_14, 4);
*eyeNext = Camera_AddVecGeoToVec3f(at, &spB8);
vecGeo.yaw = Camera_LERPCeilS(rwData->unk_0C, atToEyeNextDir.yaw, roData->unk_14, 4);
vecGeo.pitch = Camera_LERPCeilS(rwData->unk_0E, atToEyeNextDir.pitch, roData->unk_14, 4);
*eyeNext = Camera_AddVecGeoToVec3f(at, &vecGeo);
*eye = *eyeNext;
Camera_BGCheck(camera, at, eye);
camera->fov = Camera_LERPCeilF(roData->unk_18, camera->fov, camera->fovUpdateRate, 1.0f);

View File

@ -2574,12 +2574,14 @@ s32 sCameraLetterboxSize = 32;
s32 D_8011D3AC = -1;
s16 D_8011D3B0[] = {
0x0AAA, 0xF556, 0x1555, 0xEAAB, 0x2AAA, 0xD556, 0x3FFF, 0xC001, 0x5555, 0xAAAB, 0x6AAA, 0x9556, 0x7FFF, 0x0000,
// Used in Camera_KeepOn3 and Camera_KeepOn4 to check around an `at` position for an `eye` position such that the
// `at`-`eye` segment is not obstructed by collision or colliders.
s16 sCamCheckAroundOffsetsYaw[] = {
0x0AAA, -0x0AAA, 0x1555, -0x1555, 0x2AAA, -0x2AAA, 0x3FFF,
-0x3FFF, 0x5555, -0x5555, 0x6AAA, -0x6AAA, 0x7FFF, 0x0000,
};
s16 D_8011D3CC[] = {
0x0000, 0x02C6, 0x058C, 0x0000, 0x0000, 0xFD3A, 0x0000, 0x0852, 0x0000, 0x0000, 0x0B18, 0x02C6, 0xFA74, 0x0000,
s16 sCamCheckAroundOffsetsPitch[] = {
0x0000, 0x02C6, 0x058C, 0x0000, 0x0000, -0x02C6, 0x0000, 0x0852, 0x0000, 0x0000, 0x0B18, 0x02C6, -0x058C, 0x0000,
};
s32 sUpdateCameraDirection = 0;

View File

@ -4,32 +4,13 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_im/object_im.h"
struct DemoIm;
typedef void (*DemoImActionFunc)(struct DemoIm*, struct PlayState*);
typedef void (*DemoImDrawFunc)(struct DemoIm*, struct PlayState*);
typedef enum ImpaLimb {
/* 0x00 */ IMPA_LIMB_NONE,
/* 0x01 */ IMPA_LIMB_ROOT,
/* 0x02 */ IMPA_LIMB_TORSO,
/* 0x03 */ IMPA_LIMB_LEFT_THIGH,
/* 0x04 */ IMPA_LIMB_LEFT_LEG,
/* 0x05 */ IMPA_LIMB_LEFT_FOOT,
/* 0x06 */ IMPA_LIMB_RIGHT_THIGH,
/* 0x07 */ IMPA_LIMB_RIGHT_LEG,
/* 0x08 */ IMPA_LIMB_RIGHT_FOOT,
/* 0x09 */ IMPA_LIMB_CHEST,
/* 0x0A */ IMPA_LIMB_LEFT_SHOULDER,
/* 0x0B */ IMPA_LIMB_LEFT_ARM,
/* 0x0C */ IMPA_LIMB_LEFT_HAND,
/* 0x0D */ IMPA_LIMB_RIGHT_SHOULDER,
/* 0x0E */ IMPA_LIMB_RIGHT_ARM,
/* 0x0F */ IMPA_LIMB_RIGHT_HAND,
/* 0x10 */ IMPA_LIMB_HEAD,
/* 0x11 */ IMPA_LIMB_MAX
} ImpaLimb;
typedef struct DemoIm {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;

View File

@ -4,30 +4,12 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_anubice/object_anubice.h"
struct EnAnubice;
typedef void (*EnAnubiceActionFunc)(struct EnAnubice*, struct PlayState*);
typedef enum AnubiceLimbs {
/* 0 */ ANUBICE_LIMB_NONE,
/* 1 */ ANUBICE_LIMB_ROOT,
/* 2 */ ANUBICE_LIMB_BODY_ROOT,
/* 3 */ ANUBICE_LIMB_CHEST,
/* 4 */ ANUBICE_LIMB_ABDOMEN_ROOT,
/* 5 */ ANUBICE_LIMB_UPPER_ABDOMEN,
/* 6 */ ANUBICE_LIMB_LOWER_ABDOMEN,
/* 7 */ ANUBICE_LIMB_TAIL_ROOT,
/* 8 */ ANUBICE_LIMB_TAIL_BASE,
/* 9 */ ANUBICE_LIMB_TAIL_TIP,
/* 10 */ ANUBICE_LIMB_JEWEL_ROOT,
/* 11 */ ANUBICE_LIMB_JEWEL,
/* 12 */ ANUBICE_LIMB_HEAD_ROOT,
/* 13 */ ANUBICE_LIMB_HEAD,
/* 14 */ ANUBICE_LIMB_JAW_ROOT,
/* 15 */ ANUBICE_LIMB_JAW,
/* 16 */ ANUBICE_LIMB_MAX
} AnubiceLimbs;
typedef struct EnAnubice {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;

View File

@ -134,7 +134,7 @@ void EnBili_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 17.0f);
this->actor.shape.shadowAlpha = 155;
SkelAnime_Init(play, &this->skelAnime, &gBiriSkel, &gBiriDefaultAnim, this->jointTable, this->morphTable,
EN_BILI_LIMB_MAX);
BIRI_LIMB_MAX);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit);
@ -749,11 +749,11 @@ s32 EnBili_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
Vec3f limbScale = { 1.0f, 1.0f, 1.0f };
f32 curFrame = this->skelAnime.curFrame;
if (limbIndex == EN_BILI_LIMB_OUTER_HOOD) {
if (limbIndex == BIRI_LIMB_OUTER_HOOD) {
EnBili_PulseLimb3(this, curFrame, &limbScale);
} else if (limbIndex == EN_BILI_LIMB_INNER_HOOD) {
} else if (limbIndex == BIRI_LIMB_INNER_HOOD) {
EnBili_PulseLimb2(this, curFrame, &limbScale);
} else if (limbIndex == EN_BILI_LIMB_TENTACLES) {
} else if (limbIndex == BIRI_LIMB_TENTACLES) {
EnBili_PulseLimb4(this, curFrame, &limbScale);
rot->y = (Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)) - this->actor.shape.rot.y) + 0x8000;
}

View File

@ -4,19 +4,12 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_bl/object_bl.h"
struct EnBili;
typedef void (*EnBiliActionFunc)(struct EnBili*, struct PlayState*);
typedef enum EnBiliLimb {
/* 0 */ EN_BILI_LIMB_NONE,
/* 1 */ EN_BILI_LIMB_ROOT,
/* 2 */ EN_BILI_LIMB_INNER_HOOD,
/* 3 */ EN_BILI_LIMB_OUTER_HOOD,
/* 4 */ EN_BILI_LIMB_TENTACLES,
/* 5 */ EN_BILI_LIMB_MAX
} EnBiliLimb;
typedef struct EnBili {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;
@ -24,8 +17,8 @@ typedef struct EnBili {
/* 0x0194 */ u8 tentaclesTexIndex;
/* 0x0195 */ u8 playFlySfx;
/* 0x0196 */ s16 timer;
/* 0x0198 */ Vec3s jointTable[EN_BILI_LIMB_MAX];
/* 0x01B6 */ Vec3s morphTable[EN_BILI_LIMB_MAX];
/* 0x0198 */ Vec3s jointTable[BIRI_LIMB_MAX];
/* 0x01B6 */ Vec3s morphTable[BIRI_LIMB_MAX];
/* 0x01D4 */ ColliderCylinder collider;
} EnBili; // size = 0x0220

View File

@ -4,25 +4,11 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_bw/object_bw.h"
struct EnBw;
typedef void (*EnBwActionFunc)(struct EnBw*, struct PlayState*);
typedef enum TorchSlugLimb {
/* 0 */ TORCH_SLUG_LIMB_NONE,
/* 1 */ TORCH_SLUG_LIMB_BODY,
/* 2 */ TORCH_SLUG_LIMB_LEFT_EYESTALK_ROOT_ROOT,
/* 3 */ TORCH_SLUG_LIMB_LEFT_EYESTALK_ROOT,
/* 4 */ TORCH_SLUG_LIMB_LEFT_UPPER_EYESTALK_ROOT,
/* 5 */ TORCH_SLUG_LIMB_LEFT_UPPER_EYESTALK,
/* 6 */ TORCH_SLUG_LIMB_LEFT_LOWER_EYESTALK,
/* 7 */ TORCH_SLUG_LIMB_RIGHT_EYESTALK_ROOT_ROOT,
/* 8 */ TORCH_SLUG_LIMB_RIGHT_EYESTALK_ROOT,
/* 9 */ TORCH_SLUG_LIMB_RIGHT_UPPER_EYESTALK_ROOT,
/* 10 */ TORCH_SLUG_LIMB_RIGHT_UPPER_EYESTALK,
/* 11 */ TORCH_SLUG_LIMB_RIGHT_LOWER_EYESTALK,
/* 12 */ TORCH_SLUG_LIMB_MAX
} TorchSlugLimb;
typedef struct EnBw {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;

View File

@ -92,7 +92,7 @@ void EnFu_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 36.0f);
SkelAnime_InitFlex(play, &this->skelanime, &gWindmillManSkel, &gWindmillManPlayStillAnim, this->jointTable,
this->morphTable, FU_LIMB_MAX);
this->morphTable, WINDMILL_MAN_LIMB_MAX);
Animation_PlayLoop(&this->skelanime, &gWindmillManPlayStillAnim);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
@ -276,15 +276,15 @@ s32 EnFu_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
EnFu* this = (EnFu*)thisx;
s32 pad;
if (limbIndex == FU_LIMB_UNK) {
if (limbIndex == WINDMILL_MAN_LIMB_UNK) {
return false;
}
switch (limbIndex) {
case FU_LIMB_HEAD:
case WINDMILL_MAN_LIMB_HEAD:
rot->x += this->lookAngleOffset.y;
rot->z += this->lookAngleOffset.x;
break;
case FU_LIMB_CHEST_MUSIC_BOX:
case WINDMILL_MAN_LIMB_CHEST_MUSIC_BOX:
break;
}
@ -292,7 +292,7 @@ s32 EnFu_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
return false;
}
if (limbIndex == FU_LIMB_CHEST_MUSIC_BOX) {
if (limbIndex == WINDMILL_MAN_LIMB_CHEST_MUSIC_BOX) {
rot->y += Math_SinS((play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Y))) * FIDGET_AMPLITUDE;
rot->z += Math_CosS((play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Z))) * FIDGET_AMPLITUDE;
}
@ -302,7 +302,7 @@ s32 EnFu_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
void EnFu_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
EnFu* this = (EnFu*)thisx;
if (limbIndex == FU_LIMB_HEAD) {
if (limbIndex == WINDMILL_MAN_LIMB_HEAD) {
Matrix_MultVec3f(&sMtxSrc, &this->actor.focus.pos);
}
}

View File

@ -4,36 +4,18 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_fu/object_fu.h"
struct EnFu;
typedef void (*EnFuActionFunc)(struct EnFu*, struct PlayState*);
typedef enum EnFuLimb {
/* 0x00 */ FU_LIMB_ROOT,
/* 0x01 */ FU_LIMB_TORSO,
/* 0x02 */ FU_LIMB_LEFT_THIGH,
/* 0x03 */ FU_LIMB_LEFT_LEG,
/* 0x04 */ FU_LIMB_LEFT_FOOT,
/* 0x05 */ FU_LIMB_RIGHT_THIGH,
/* 0x06 */ FU_LIMB_RIGHT_LEG,
/* 0x07 */ FU_LIMB_RIGHT_FOOT,
/* 0x08 */ FU_LIMB_CHEST_MUSIC_BOX,
/* 0x09 */ FU_LIMB_LEFT_ARM_MUSIC_BOX,
/* 0x0A */ FU_LIMB_UNK,
/* 0x0B */ FU_LIMB_RIGHT_SHOULDER,
/* 0x0C */ FU_LIMB_RIGHT_ARM,
/* 0x0D */ FU_LIMB_RIGHT_HAND_AND_CRANK,
/* 0x0E */ FU_LIMB_HEAD,
/* 0x0F */ FU_LIMB_HORN,
/* 0x10 */ FU_LIMB_MAX
} EnFuLimb;
typedef struct EnFu {
/* 0x0000 */ Actor actor;
/* 0x014C */ ColliderCylinder collider;
/* 0x0198 */ SkelAnime skelanime;
/* 0x01DC */ Vec3s jointTable[FU_LIMB_MAX];
/* 0x023C */ Vec3s morphTable[FU_LIMB_MAX];
/* 0x01DC */ Vec3s jointTable[WINDMILL_MAN_LIMB_MAX];
/* 0x023C */ Vec3s morphTable[WINDMILL_MAN_LIMB_MAX];
/* 0x029C */ Vec3s lookAngleOffset; // offset applied to neck rotation to look at link when he is close
/* 0x02A2 */ Vec3s unk_2A2;
/* 0x02A8 */ u16 behaviorFlags;

View File

@ -107,7 +107,7 @@ void EnGe1_Init(Actor* thisx, PlayState* play) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &gGerudoWhiteSkel, &gGerudoWhiteIdleAnim, this->jointTable,
this->morphTable, GE1_LIMB_MAX);
this->morphTable, GERUDO_WHITE_LIMB_MAX);
Animation_PlayOnce(&this->skelAnime, &gGerudoWhiteIdleAnim);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
@ -780,7 +780,7 @@ s32 EnGe1_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
s32 pad;
EnGe1* this = (EnGe1*)thisx;
if (limbIndex == GE1_LIMB_HEAD) {
if (limbIndex == GERUDO_WHITE_LIMB_HEAD) {
rot->x += this->headRot.y;
rot->z += this->headRot.x;
}
@ -792,7 +792,8 @@ s32 EnGe1_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
// The purpose of the state flag GE1_STATE_STOP_FIDGET is to skip this code, which this actor has in lieu of an idle
// animation.
if ((limbIndex == GE1_LIMB_TORSO) || (limbIndex == GE1_LIMB_L_FOREARM) || (limbIndex == GE1_LIMB_R_FOREARM)) {
if ((limbIndex == GERUDO_WHITE_LIMB_TORSO) || (limbIndex == GERUDO_WHITE_LIMB_L_FOREARM) ||
(limbIndex == GERUDO_WHITE_LIMB_R_FOREARM)) {
rot->y += Math_SinS(play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Y)) * FIDGET_AMPLITUDE;
rot->z += Math_CosS(play->state.frames * (limbIndex * FIDGET_FREQ_LIMB + FIDGET_FREQ_Z)) * FIDGET_AMPLITUDE;
}
@ -804,7 +805,7 @@ void EnGe1_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
OPEN_DISPS(play->state.gfxCtx, "../z_en_ge1.c", 1419);
if (limbIndex == GE1_LIMB_HEAD) {
if (limbIndex == GERUDO_WHITE_LIMB_HEAD) {
gSPDisplayList(POLY_OPA_DISP++, sHairstyleDLists[this->hairstyle]);
Matrix_MultVec3f(&D_80A327A8, &this->actor.focus.pos);
}

View File

@ -4,6 +4,8 @@
#include "ultra64.h"
#include "actor.h"
#include "assets/objects/object_ge1/object_ge1.h"
struct EnGe1;
typedef void (*EnGe1AnimFunc)(struct EnGe1*);
@ -18,32 +20,12 @@ typedef enum EnGe1Type {
/* 0x46 */ GE1_TYPE_TRAINING_GROUNDS_GUARD
} EnGe1Type;
typedef enum EnGe1Limb {
/* 00 */ GE1_LIMB_NONE,
/* 01 */ GE1_LIMB_WAIST,
/* 02 */ GE1_LIMB_L_THIGH,
/* 03 */ GE1_LIMB_L_LOWER_LEG,
/* 04 */ GE1_LIMB_L_FOOT,
/* 05 */ GE1_LIMB_R_THIGH,
/* 06 */ GE1_LIMB_R_LOWER_LEG,
/* 07 */ GE1_LIMB_R_FOOT,
/* 08 */ GE1_LIMB_TORSO,
/* 09 */ GE1_LIMB_L_UPPER_ARM,
/* 10 */ GE1_LIMB_L_FOREARM,
/* 11 */ GE1_LIMB_L_HAND,
/* 12 */ GE1_LIMB_R_UPPER_ARM,
/* 13 */ GE1_LIMB_R_FOREARM,
/* 14 */ GE1_LIMB_R_HAND,
/* 15 */ GE1_LIMB_HEAD,
/* 16 */ GE1_LIMB_MAX
} EnGe1Limb;
typedef struct EnGe1 {
/* 0x0000 */ Actor actor;
/* 0x014C */ ColliderCylinder collider;
/* 0x0198 */ SkelAnime skelAnime;
/* 0x01DC */ Vec3s jointTable[GE1_LIMB_MAX];
/* 0x023C */ Vec3s morphTable[GE1_LIMB_MAX];
/* 0x01DC */ Vec3s jointTable[GERUDO_WHITE_LIMB_MAX];
/* 0x023C */ Vec3s morphTable[GERUDO_WHITE_LIMB_MAX];
/* 0x029C */ Vec3s headRot;
/* 0x02A2 */ Vec3s unk_2A2;
/* 0x02A8 */ s16 eyeIndex;

View File

@ -81,7 +81,7 @@ void EnGe3_Init(Actor* thisx, PlayState* play2) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 36.0f);
SkelAnime_InitFlex(play, &this->skelAnime, &gGerudoRedSkel, NULL, this->jointTable, this->morphTable,
GELDB_LIMB_MAX);
GERUDO_RED_LIMB_MAX);
Animation_PlayLoop(&this->skelAnime, &gGerudoRedStandAnim);
Collider_InitCylinder(play, &this->collider);
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
@ -241,13 +241,13 @@ s32 EnGe3_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
switch (limbIndex) {
// Hide swords and veil from object_geldb
case GELDB_LIMB_VEIL:
case GELDB_LIMB_R_SWORD:
case GELDB_LIMB_L_SWORD:
case GERUDO_RED_LIMB_VEIL:
case GERUDO_RED_LIMB_R_SWORD:
case GERUDO_RED_LIMB_L_SWORD:
*dList = NULL;
return false;
// Turn head
case GELDB_LIMB_HEAD:
case GERUDO_RED_LIMB_HEAD:
rot->x += this->headRot.y;
#if OOT_VERSION >= PAL_1_1
FALLTHROUGH;
@ -256,14 +256,14 @@ s32 EnGe3_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
// depending on what was drawn earlier in the frame.
OPEN_DISPS(play->state.gfxCtx, "../z_en_ge3.c", 547);
switch (limbIndex) {
case GELDB_LIMB_NECK:
case GERUDO_RED_LIMB_NECK:
break;
case GELDB_LIMB_HEAD:
case GERUDO_RED_LIMB_HEAD:
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 80, 60, 10, 255);
break;
case GELDB_LIMB_R_SWORD:
case GELDB_LIMB_L_SWORD:
case GERUDO_RED_LIMB_R_SWORD:
case GERUDO_RED_LIMB_L_SWORD:
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 140, 170, 230, 255);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
@ -284,7 +284,7 @@ void EnGe3_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
EnGe3* this = (EnGe3*)thisx;
Vec3f D_80A351C8 = { 600.0f, 700.0f, 0.0f };
if (limbIndex == GELDB_LIMB_HEAD) {
if (limbIndex == GERUDO_RED_LIMB_HEAD) {
Matrix_MultVec3f(&D_80A351C8, &this->actor.focus.pos);
}
}

View File

@ -3,7 +3,8 @@
#include "ultra64.h"
#include "actor.h"
#include "overlays/actors/ovl_En_GeldB/z_en_geldb.h"
#include "assets/objects/object_geldb/object_geldb.h"
struct EnGe3;
@ -13,8 +14,8 @@ typedef struct EnGe3 {
/* 0x0000 */ Actor actor;
/* 0x014C */ ColliderCylinder collider;
/* 0x0198 */ SkelAnime skelAnime;
/* 0x01DC */ Vec3s jointTable[GELDB_LIMB_MAX];
/* 0x026C */ Vec3s morphTable[GELDB_LIMB_MAX];
/* 0x01DC */ Vec3s jointTable[GERUDO_RED_LIMB_MAX];
/* 0x026C */ Vec3s morphTable[GERUDO_RED_LIMB_MAX];
/* 0x02FC */ s16 eyeIndex;
/* 0x02FE */ s16 blinkTimer;
/* 0x0300 */ Vec3s headRot;

View File

@ -251,7 +251,7 @@ void EnGeldB_Init(Actor* thisx, PlayState* play) {
this->blinkState = 0;
this->unkFloat = 10.0f;
SkelAnime_InitFlex(play, &this->skelAnime, &gGerudoRedSkel, &gGerudoRedNeutralAnim, this->jointTable,
this->morphTable, GELDB_LIMB_MAX);
this->morphTable, GERUDO_RED_LIMB_MAX);
Collider_InitCylinder(play, &this->bodyCollider);
Collider_SetCylinder(play, &this->bodyCollider, thisx, &sBodyCylinderInit);
Collider_InitTris(play, &this->blockCollider);
@ -1464,14 +1464,14 @@ s32 EnGeldB_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
EnGeldB* this = (EnGeldB*)thisx;
OPEN_DISPS(play->state.gfxCtx, "../z_en_geldB.c", 2507);
if (limbIndex == GELDB_LIMB_NECK) {
if (limbIndex == GERUDO_RED_LIMB_NECK) {
rot->z += this->headRot.x;
rot->x += this->headRot.y;
rot->y += this->headRot.z;
} else if (limbIndex == GELDB_LIMB_HEAD) {
} else if (limbIndex == GERUDO_RED_LIMB_HEAD) {
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 80, 60, 10, 255);
} else if ((limbIndex == GELDB_LIMB_R_SWORD) || (limbIndex == GELDB_LIMB_L_SWORD)) {
} else if ((limbIndex == GERUDO_RED_LIMB_R_SWORD) || (limbIndex == GERUDO_RED_LIMB_L_SWORD)) {
gDPPipeSync(POLY_OPA_DISP++);
gDPSetEnvColor(POLY_OPA_DISP++, 140, 170, 230, 255);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
@ -1497,7 +1497,7 @@ void EnGeldB_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
EnGeldB* this = (EnGeldB*)thisx;
s32 bodyPart = -1;
if (limbIndex == GELDB_LIMB_R_SWORD) {
if (limbIndex == GERUDO_RED_LIMB_R_SWORD) {
Matrix_MultVec3f(&swordQuadOffset1, &this->swordCollider.dim.quad[1]);
Matrix_MultVec3f(&swordQuadOffset0, &this->swordCollider.dim.quad[0]);
Matrix_MultVec3f(&swordQuadOffset3, &this->swordCollider.dim.quad[3]);
@ -1515,42 +1515,43 @@ void EnGeldB_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
EffectBlure_AddVertex(Effect_GetByIndex(this->blureIndex), &swordTip, &swordHilt);
}
} else {
Actor_SetFeetPos(&this->actor, limbIndex, GELDB_LIMB_L_FOOT, &footOffset, GELDB_LIMB_R_FOOT, &footOffset);
Actor_SetFeetPos(&this->actor, limbIndex, GERUDO_RED_LIMB_L_FOOT, &footOffset, GERUDO_RED_LIMB_R_FOOT,
&footOffset);
}
if (limbIndex == GELDB_LIMB_L_FOOT) {
if (limbIndex == GERUDO_RED_LIMB_L_FOOT) {
Matrix_MultVec3f(&footOffset, &this->leftFootPos);
} else if (limbIndex == GELDB_LIMB_R_FOOT) {
} else if (limbIndex == GERUDO_RED_LIMB_R_FOOT) {
Matrix_MultVec3f(&footOffset, &this->rightFootPos);
}
if (this->iceTimer != 0) {
switch (limbIndex) {
case GELDB_LIMB_NECK:
case GERUDO_RED_LIMB_NECK:
bodyPart = 0;
break;
case GELDB_LIMB_L_SWORD:
case GERUDO_RED_LIMB_L_SWORD:
bodyPart = 1;
break;
case GELDB_LIMB_R_SWORD:
case GERUDO_RED_LIMB_R_SWORD:
bodyPart = 2;
break;
case GELDB_LIMB_L_UPPER_ARM:
case GERUDO_RED_LIMB_L_UPPER_ARM:
bodyPart = 3;
break;
case GELDB_LIMB_R_UPPER_ARM:
case GERUDO_RED_LIMB_R_UPPER_ARM:
bodyPart = 4;
break;
case GELDB_LIMB_TORSO:
case GERUDO_RED_LIMB_TORSO:
bodyPart = 5;
break;
case GELDB_LIMB_WAIST:
case GERUDO_RED_LIMB_WAIST:
bodyPart = 6;
break;
case GELDB_LIMB_L_FOOT:
case GERUDO_RED_LIMB_L_FOOT:
bodyPart = 7;
break;
case GELDB_LIMB_R_FOOT:
case GERUDO_RED_LIMB_R_FOOT:
bodyPart = 8;
break;
default:

View File

@ -4,35 +4,9 @@
#include "ultra64.h"
#include "actor.h"
struct EnGeldB;
#include "assets/objects/object_geldb/object_geldb.h"
typedef enum EnGeldBLimb {
/* 0x00 */ GELDB_LIMB_NONE,
/* 0x01 */ GELDB_LIMB_ROOT,
/* 0x02 */ GELDB_LIMB_TORSO,
/* 0x03 */ GELDB_LIMB_NECK,
/* 0x04 */ GELDB_LIMB_PONYTAIL,
/* 0x05 */ GELDB_LIMB_VEIL,
/* 0x06 */ GELDB_LIMB_HEAD,
/* 0x07 */ GELDB_LIMB_R_UPPER_ARM,
/* 0x08 */ GELDB_LIMB_R_FOREARM,
/* 0x09 */ GELDB_LIMB_R_WRIST,
/* 0x0A */ GELDB_LIMB_R_HAND,
/* 0x0B */ GELDB_LIMB_R_SWORD,
/* 0x0C */ GELDB_LIMB_L_UPPER_ARM,
/* 0x0D */ GELDB_LIMB_L_FOREARM,
/* 0x0E */ GELDB_LIMB_L_WRIST,
/* 0x0F */ GELDB_LIMB_L_HAND,
/* 0x10 */ GELDB_LIMB_L_SWORD,
/* 0x11 */ GELDB_LIMB_L_THIGH,
/* 0x12 */ GELDB_LIMB_L_SHIN,
/* 0x13 */ GELDB_LIMB_L_FOOT,
/* 0x14 */ GELDB_LIMB_R_THIGH,
/* 0x15 */ GELDB_LIMB_R_SHIN,
/* 0x16 */ GELDB_LIMB_R_FOOT,
/* 0x17 */ GELDB_LIMB_WAIST,
/* 0x18 */ GELDB_LIMB_MAX
} EnGeldBLimb;
struct EnGeldB;
typedef void (*EnGeldBActionFunc)(struct EnGeldB*, struct PlayState*);
@ -40,8 +14,8 @@ typedef struct EnGeldB {
/* 0x0000 */ Actor actor;
/* 0x014C */ Vec3s bodyPartsPos[10];
/* 0x0188 */ SkelAnime skelAnime;
/* 0x01CC */ Vec3s jointTable[GELDB_LIMB_MAX];
/* 0x025C */ Vec3s morphTable[GELDB_LIMB_MAX];
/* 0x01CC */ Vec3s jointTable[GERUDO_RED_LIMB_MAX];
/* 0x025C */ Vec3s morphTable[GERUDO_RED_LIMB_MAX];
/* 0x02EC */ s32 action;
/* 0x02F0 */ char unk_2F0[4];
/* 0x02F4 */ EnGeldBActionFunc actionFunc;

View File

@ -4,31 +4,7 @@
#include "ultra64.h"
#include "actor.h"
typedef enum EnHataLimb {
/* 0x00 */ FLAGPOLE_LIMB_NONE,
/* 0x01 */ FLAGPOLE_LIMB_POLE_BASE,
/* 0x02 */ FLAGPOLE_LIMB_POLE,
/* 0x03 */ FLAGPOLE_LIMB_FLAG_1_BASE,
/* 0x04 */ FLAGPOLE_LIMB_FLAG_1_HOIST_END_BASE,
/* 0x05 */ FLAGPOLE_LIMB_FLAG_1_HOIST_MID_BASE,
/* 0x06 */ FLAGPOLE_LIMB_FLAG_1_FLY_MID_BASE,
/* 0x07 */ FLAGPOLE_LIMB_FLAG_1_FLY_END_BASE,
/* 0x08 */ FLAGPOLE_LIMB_FLAG_1_FLY_END,
/* 0x09 */ FLAGPOLE_LIMB_FLAG_1_FLY_MID,
/* 0x0A */ FLAGPOLE_LIMB_FLAG_1_HOIST_MID,
/* 0x0B */ FLAGPOLE_LIMB_FLAG_1_HOIST_END,
/* 0x0C */ FLAGPOLE_LIMB_FLAG_2_BASE,
/* 0x0D */ FLAGPOLE_LIMB_FLAG_2_HOIST_END_BASE,
/* 0x0E */ FLAGPOLE_LIMB_FLAG_2_HOIST_MID_BASE,
/* 0x0F */ FLAGPOLE_LIMB_FLAG_2_FLY_MID_BASE,
/* 0x10 */ FLAGPOLE_LIMB_FLAG_2_FLY_END_BASE,
/* 0x11 */ FLAGPOLE_LIMB_FLAG_2_FLY_END,
/* 0x12 */ FLAGPOLE_LIMB_FLAG_2_FLY_MID,
/* 0x13 */ FLAGPOLE_LIMB_FLAG_2_HOIST_MID,
/* 0x14 */ FLAGPOLE_LIMB_FLAG_2_HOIST_END,
/* 0x15 */ FLAGPOLE_LIMB_MAX
} EnHataLimb;
#include "assets/objects/object_hata/object_hata.h"
typedef struct EnHata {
/* 0x0000 */ DynaPolyActor dyna;

View File

@ -59,34 +59,6 @@ typedef struct EnViewerFireEffect {
/* 0x30 */ u8 state;
} EnViewerFireEffect; // size = 0x34
typedef enum YoungGanondorfLimb {
/* 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 {
/* 0x0000 */ Actor actor;
/* 0x014C */ Skin skin;