Document object_shn (Shooting Gallery Men and Swamp Guide) (#805)

* Limbs, skeleton, limb DLs, main textures

* Finish documenting object_shn

* Name the eyeIndex variable in syateki_man

* Use limb enum in syateki_man

* One more limb enum I forgot, sorry

* Respond to Elliptic's review
This commit is contained in:
Tom Overton 2022-04-24 10:14:14 -07:00 committed by GitHub
parent 07ce7c8ab3
commit d0d36b603d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 175 additions and 146 deletions

View File

@ -1,97 +1,125 @@
<Root>
<!-- Assets for the Shooting Gallery Men and the Swamp Guide. They all use the same body and just swap out the head. -->
<File Name="object_shn" Segment="6">
<DList Name="object_shn_DL_003510" Offset="0x3510" />
<DList Name="object_shn_DL_003600" Offset="0x3600" />
<DList Name="object_shn_DL_0039A0" Offset="0x39A0" />
<DList Name="object_shn_DL_003DA0" Offset="0x3DA0" />
<DList Name="object_shn_DL_004038" Offset="0x4038" />
<DList Name="object_shn_DL_0042E0" Offset="0x42E0" />
<DList Name="object_shn_DL_004620" Offset="0x4620" />
<DList Name="object_shn_DL_0048B8" Offset="0x48B8" />
<DList Name="object_shn_DL_004B60" Offset="0x4B60" />
<DList Name="object_shn_DL_004EA8" Offset="0x4EA8" />
<DList Name="object_shn_DL_004FC8" Offset="0x4FC8" />
<DList Name="object_shn_DL_0050D0" Offset="0x50D0" />
<DList Name="object_shn_DL_005298" Offset="0x5298" />
<DList Name="object_shn_DL_0053B8" Offset="0x53B8" />
<DList Name="object_shn_DL_0054C0" Offset="0x54C0" />
<Texture Name="object_shn_TLUT_005688" OutName="tlut_005688" Format="rgba16" Width="16" Height="16" Offset="0x5688" />
<Texture Name="object_shn_TLUT_005888" OutName="tlut_005888" Format="rgba16" Width="16" Height="16" Offset="0x5888" />
<Texture Name="object_shn_Tex_005A88" OutName="tex_005A88" Format="ci8" Width="8" Height="8" Offset="0x5A88" />
<Texture Name="object_shn_Tex_005AC8" OutName="tex_005AC8" Format="rgba16" Width="32" Height="32" Offset="0x5AC8" />
<Texture Name="object_shn_Tex_0062C8" OutName="tex_0062C8" Format="rgba16" Width="32" Height="32" Offset="0x62C8" />
<!-- <Blob Name="object_shn_Blob_006AC8" Size="0x800" Offset="0x6AC8" /> -->
<Texture Name="object_shn_Tex_0072C8" OutName="tex_0072C8" Format="ci8" Width="16" Height="16" Offset="0x72C8" />
<Texture Name="object_shn_Tex_0073C8" OutName="tex_0073C8" Format="ci8" Width="8" Height="8" Offset="0x73C8" />
<Texture Name="object_shn_Tex_007408" OutName="tex_007408" Format="ci8" Width="32" Height="32" Offset="0x7408" />
<Texture Name="object_shn_Tex_007808" OutName="tex_007808" Format="ci8" Width="16" Height="16" Offset="0x7808" />
<Texture Name="object_shn_Tex_007908" OutName="tex_007908" Format="ci8" Width="16" Height="16" Offset="0x7908" />
<Texture Name="object_shn_Tex_007A08" OutName="tex_007A08" Format="ci8" Width="32" Height="32" Offset="0x7A08" />
<Texture Name="object_shn_Tex_007E08" OutName="tex_007E08" Format="ci8" Width="16" Height="16" Offset="0x7E08" />
<Texture Name="object_shn_Tex_007F08" OutName="tex_007F08" Format="ci8" Width="8" Height="8" Offset="0x7F08" />
<Texture Name="object_shn_Tex_007F48" OutName="tex_007F48" Format="ci8" Width="16" Height="16" Offset="0x7F48" />
<!-- <Blob Name="object_shn_Blob_008050" Size="0x10" Offset="0x8050" /> -->
<DList Name="object_shn_DL_008BA0" Offset="0x8BA0" />
<DList Name="object_shn_DL_008C70" Offset="0x8C70" />
<DList Name="object_shn_DL_008D90" Offset="0x8D90" />
<DList Name="object_shn_DL_008E48" Offset="0x8E48" />
<DList Name="object_shn_DL_008F00" Offset="0x8F00" />
<DList Name="object_shn_DL_009040" Offset="0x9040" />
<Texture Name="object_shn_TLUT_0091D8" OutName="tlut_0091D8" Format="rgba16" Width="16" Height="16" Offset="0x91D8" />
<Texture Name="object_shn_TLUT_0093D8" OutName="tlut_0093D8" Format="rgba16" Width="16" Height="16" Offset="0x93D8" />
<Texture Name="object_shn_TLUT_0095D8" OutName="tlut_0095D8" Format="rgba16" Width="16" Height="16" Offset="0x95D8" />
<Texture Name="object_shn_TLUT_0097D8" OutName="tlut_0097D8" Format="rgba16" Width="16" Height="16" Offset="0x97D8" />
<Texture Name="object_shn_TLUT_0099D8" OutName="tlut_0099D8" Format="rgba16" Width="16" Height="16" Offset="0x99D8" />
<Texture Name="object_shn_TLUT_009BD8" OutName="tlut_009BD8" Format="rgba16" Width="16" Height="16" Offset="0x9BD8" />
<Texture Name="object_shn_Tex_009DD8" OutName="tex_009DD8" Format="ci8" Width="32" Height="32" Offset="0x9DD8" />
<Texture Name="object_shn_Tex_00A1D8" OutName="tex_00A1D8" Format="ci8" Width="16" Height="16" Offset="0xA1D8" />
<Texture Name="object_shn_Tex_00A2D8" OutName="tex_00A2D8" Format="ci8" Width="16" Height="16" Offset="0xA2D8" />
<Texture Name="object_shn_Tex_00A3D8" OutName="tex_00A3D8" Format="ci8" Width="8" Height="8" Offset="0xA3D8" />
<Texture Name="object_shn_Tex_00A418" OutName="tex_00A418" Format="ci8" Width="32" Height="32" Offset="0xA418" />
<Texture Name="object_shn_Tex_00A818" OutName="tex_00A818" Format="ci8" Width="8" Height="8" Offset="0xA818" />
<DList Name="object_shn_DL_00B730" Offset="0xB730" />
<DList Name="gObjectShnSwampGuideHead" Offset="0xB738" />
<Texture Name="object_shn_TLUT_00BCD8" OutName="tlut_00BCD8" Format="rgba16" Width="16" Height="16" Offset="0xBCD8" />
<Texture Name="object_shn_TLUT_00BED8" OutName="tlut_00BED8" Format="rgba16" Width="16" Height="16" Offset="0xBED8" />
<Texture Name="object_shn_Tex_00C0D8" OutName="tex_00C0D8" Format="ci8" Width="8" Height="8" Offset="0xC0D8" />
<Texture Name="object_shn_Tex_00C118" OutName="tex_00C118" Format="ci8" Width="16" Height="16" Offset="0xC118" />
<Texture Name="object_shn_Tex_00C218" OutName="tex_00C218" Format="ci8" Width="16" Height="16" Offset="0xC218" />
<Texture Name="object_shn_Tex_00C318" OutName="tex_00C318" Format="ci8" Width="32" Height="16" Offset="0xC318" />
<Texture Name="object_shn_Tex_00C518" OutName="tex_00C518" Format="ci8" Width="32" Height="32" Offset="0xC518" />
<Texture Name="object_shn_Tex_00C918" OutName="tex_00C918" Format="ci8" Width="16" Height="16" Offset="0xC918" />
<Texture Name="object_shn_Tex_00CA18" OutName="tex_00CA18" Format="rgba16" Width="8" Height="8" Offset="0xCA18" />
<Texture Name="object_shn_Tex_00CA98" OutName="tex_00CA98" Format="ci8" Width="16" Height="32" Offset="0xCA98" />
<Animation Name="object_shn_Anim_00D2F8" Offset="0xD2F8" />
<Animation Name="object_shn_Anim_00D3AC" Offset="0xD3AC" />
<Animation Name="object_shn_Anim_00D9D0" Offset="0xD9D0" />
<Animation Name="object_shn_Anim_00DFEC" Offset="0xDFEC" />
<Animation Name="object_shn_Anim_00E6C4" Offset="0xE6C4" />
<Limb Name="gObjectShnLimbWaist" Type="Standard" EnumName="OBJECT_SHN_LIMB_WAIST" Offset="0xE6E0" />
<Limb Name="gObjectShnLimbLegLeft" Type="Standard" EnumName="OBJECT_SHN_LIMB_LEG_LEFT" Offset="0xE6EC" />
<Limb Name="gObjectShnLimbShinLeft" Type="Standard" EnumName="OBJECT_SHN_LIMB_SHIN_LEFT" Offset="0xE6F8" />
<Limb Name="gObjectShnLimbFootLeft" Type="Standard" EnumName="OBJECT_SHN_LIMB_FOOT_LEFT" Offset="0xE704" />
<Limb Name="gObjectShnLimbLegRight" Type="Standard" EnumName="OBJECT_SHN_LIMB_LEG_RIGHT" Offset="0xE710" />
<Limb Name="gObjectShnLimbShinRight" Type="Standard" EnumName="OBJECT_SHN_LIMB_SHIN_RIGHT" Offset="0xE71C" />
<Limb Name="gObjectShnLimbFootRight" Type="Standard" EnumName="OBJECT_SHN_LIMB_FOOT_RIGHT" Offset="0xE728" />
<Limb Name="gObjectShnLimbTorso" Type="Standard" EnumName="OBJECT_SHN_LIMB_TORSO" Offset="0xE734" />
<Limb Name="gObjectShnLimbShoulderLeft" Type="Standard" EnumName="OBJECT_SHN_LIMB_SHOULDER_LEFT" Offset="0xE740" />
<Limb Name="gObjectShnLimbForearmLeft" Type="Standard" EnumName="OBJECT_SHN_LIMB_FOREARM_LEFT" Offset="0xE74C" />
<Limb Name="gObjectShnLimbHandLeft" Type="Standard" EnumName="OBJECT_SHN_LIMB_HAND_LEFT" Offset="0xE758" />
<Limb Name="gObjectShnLimbShoulderRight" Type="Standard" EnumName="OBJECT_SHN_LIMB_SHOULDER_RIGHT" Offset="0xE764" />
<Limb Name="gObjectShnLimbForearmRight" Type="Standard" EnumName="OBJECT_SHN_LIMB_FOREARM_RIGHT" Offset="0xE770" />
<Limb Name="gObjectShnLimbHandRight" Type="Standard" EnumName="OBJECT_SHN_LIMB_HAND_RIGHT" Offset="0xE77C" />
<Limb Name="gObjectShnLimbHead" Type="Standard" EnumName="OBJECT_SHN_LIMB_HEAD" Offset="0xE788" />
<Skeleton Name="gObjectShnSkel" Type="Flex" LimbType="Standard" LimbNone="OBJECT_SHN_LIMB_NONE" LimbMax="OBJECT_SHN_LIMB_MAX" EnumName="ObjectShnLimbs" Offset="0xE7D0" />
<DList Name="object_shn_DL_00F2D0" Offset="0xF2D0" />
<Texture Name="object_shn_TLUT_00F790" OutName="tlut_00F790" Format="rgba16" Width="16" Height="16" Offset="0xF790" />
<Texture Name="object_shn_TLUT_00F990" OutName="tlut_00F990" Format="rgba16" Width="16" Height="16" Offset="0xF990" />
<Texture Name="object_shn_Tex_00FB90" OutName="tex_00FB90" Format="rgba16" Width="32" Height="32" Offset="0xFB90" />
<Texture Name="object_shn_Tex_010390" OutName="tex_010390" Format="rgba16" Width="32" Height="32" Offset="0x10390" />
<Texture Name="object_shn_Tex_010B90" OutName="tex_010B90" Format="ci8" Width="32" Height="32" Offset="0x10B90" />
<Texture Name="object_shn_Tex_010F90" OutName="tex_010F90" Format="ci8" Width="8" Height="8" Offset="0x10F90" />
<Texture Name="object_shn_Tex_010FD0" OutName="tex_010FD0" Format="ci8" Width="16" Height="16" Offset="0x10FD0" />
<Texture Name="object_shn_Tex_0110D0" OutName="tex_0110D0" Format="ci8" Width="16" Height="16" Offset="0x110D0" />
<Texture Name="object_shn_Tex_0111D0" OutName="tex_0111D0" Format="ci8" Width="8" Height="8" Offset="0x111D0" />
<!-- <Blob Name="object_shn_Blob_011210" Size="0x10" Offset="0x11210" /> -->
<!-- Burly Guy Limb DisplayLists. Includes the Swamp Shooting Gallery Man's head -->
<DList Name="gBurlyGuyWaistDL" Offset="0x3510" />
<DList Name="gBurlyGuyTorsoDL" Offset="0x3600" />
<DList Name="gSwampShootingGalleryManHeadDL" Offset="0x39A0" />
<DList Name="gBurlyGuyRightShoulderDL" Offset="0x3DA0" />
<DList Name="gBurlyGuyRightForearmDL" Offset="0x4038" />
<DList Name="gBurlyGuyRightHandDL" Offset="0x42E0" />
<DList Name="gBurlyGuyLeftShoulderDL" Offset="0x4620" />
<DList Name="gBurlyGuyLeftForearmDL" Offset="0x48B8" />
<DList Name="gBurlyGuyLeftHandDL" Offset="0x4B60" />
<DList Name="gBurlyGuyRightThighDL" Offset="0x4EA8" />
<DList Name="gBurlyGuyRightShinDL" Offset="0x4FC8" />
<DList Name="gBurlyGuyRightFootDL" Offset="0x50D0" />
<DList Name="gBurlyGuyLeftThighDL" Offset="0x5298" />
<DList Name="gBurlyGuyLeftShinDL" Offset="0x53B8" />
<DList Name="gBurlyGuyLeftFootDL" Offset="0x54C0" />
<!-- Textures for Burly Guy's body, as well as the Swamp Shooting Gallery Man's head -->
<Texture Name="gSwampShootingGalleryManNoseTLUT" OutName="swamp_shooting_gallery_man_nose_tlut" Format="rgba16" Width="16" Height="16" Offset="0x5688" />
<Texture Name="gBurlyGuyTLUT" OutName="shooting_gallery_man_tlut" Format="rgba16" Width="16" Height="16" Offset="0x5888" />
<Texture Name="gBurlyGuySkinTex" OutName="shooting_gallery_man_skin" Format="ci8" Width="8" Height="8" Offset="0x5A88" />
<Texture Name="gSwampShootingGalleryManEyeOpenTex" OutName="swamp_shooting_gallery_man_eye_open" Format="rgba16" Width="32" Height="32" Offset="0x5AC8" />
<Texture Name="gSwampShootingGalleryManEyeHalfTex" OutName="swamp_shooting_gallery_man_eye_half" Format="rgba16" Width="32" Height="32" Offset="0x62C8" />
<Texture Name="gSwampShootingGalleryManEyeClosedTex" OutName="swamp_shooting_gallery_man_eye_closed" Format="rgba16" Width="32" Height="32" Offset="0x6AC8" />
<Texture Name="gSwampShootingGalleryManEarTex" OutName="swamp_shooting_gallery_man_ear" Format="ci8" Width="16" Height="16" Offset="0x72C8" />
<Texture Name="gSwampShootingGalleryManNoseTex" OutName="swamp_shooting_gallery_man_nose" Format="ci8" Width="8" Height="8" Offset="0x73C8" />
<Texture Name="gSwampShootingGalleryManBeardAndLipsTex" OutName="swamp_shooting_gallery_man_beard_and_lips" Format="ci8" Width="32" Height="32" Offset="0x7408" />
<Texture Name="gSwampShootingGalleryManHairTex" OutName="swamp_shooting_gallery_man_hair" Format="ci8" Width="16" Height="16" Offset="0x7808" />
<Texture Name="gBurlyGuyHandTex" OutName="shooting_gallery_man_hand" Format="ci8" Width="16" Height="16" Offset="0x7908" />
<Texture Name="gBurlyGuyBodyHairTex" OutName="shooting_gallery_man_body_hair" Format="ci8" Width="32" Height="32" Offset="0x7A08" />
<Texture Name="gBurlyGuyVestTex" OutName="shooting_gallery_man_vest" Format="ci8" Width="16" Height="16" Offset="0x7E08" />
<Texture Name="gBurlyGuyPantsTex" OutName="shooting_gallery_man_pants" Format="ci8" Width="8" Height="8" Offset="0x7F08" />
<Texture Name="gBurlyGuyShoesTex" OutName="shooting_gallery_man_shoes" Format="ci8" Width="16" Height="16" Offset="0x7F48" />
<!-- Unused Empty Texture Animation -->
<TextureAnimation Name="gBurlyGuyUnused8050TexAnim" Offset="0x8050" />
<!-- DisplayLists for an unused duplicate of the Town Shooting Gallery Man's head -->
<DList Name="gUnusedTownShootingGalleryManEyesDL" Offset="0x8BA0" />
<DList Name="gUnusedTownShootingGalleryManLipsDL" Offset="0x8C70" />
<DList Name="gUnusedTownShootingGalleryManNoseDL" Offset="0x8D90" />
<DList Name="gUnusedTownShootingGalleryManEarsDL" Offset="0x8E48" />
<DList Name="gUnusedTownShootingGalleryManHairAndSideburnsDL" Offset="0x8F00" />
<DList Name="gUnusedTownShootingGalleryManFaceAndChinDL" Offset="0x9040" />
<!-- Textures for an unused duplicate of the Town Shooting Gallery Man's head -->
<Texture Name="gUnusedTownShootingGalleryManBeardAndLipsTLUT" OutName="unused_town_shooting_gallery_man_beard_and_lips_tlut" Format="rgba16" Width="16" Height="16" Offset="0x91D8" />
<Texture Name="gUnusedTownShootingGalleryManHairTLUT" OutName="unused_town_shooting_gallery_man_hair_tlut" Format="rgba16" Width="16" Height="16" Offset="0x93D8" />
<Texture Name="gUnusedTownShootingGalleryManEarTLUT" OutName="unused_town_shooting_gallery_man_ear_tlut" Format="rgba16" Width="16" Height="16" Offset="0x95D8" />
<Texture Name="gUnusedTownShootingGalleryManNoseTLUT" OutName="unused_town_shooting_gallery_man_nose_tlut" Format="rgba16" Width="16" Height="16" Offset="0x97D8" />
<Texture Name="gUnusedTownShootingGalleryManEyeTLUT" OutName="unused_town_shooting_gallery_man_eye_tlut" Format="rgba16" Width="16" Height="16" Offset="0x99D8" />
<Texture Name="gUnusedTownShootingGalleryManSkinTLUT" OutName="unused_town_shooting_gallery_man_skin_tlut" Format="rgba16" Width="16" Height="16" Offset="0x9BD8" />
<Texture Name="gUnusedTownShootingGalleryManBeardAndLipsTex" OutName="unused_town_shooting_gallery_man_beard_and_lips" Format="ci8" Width="32" Height="32" Offset="0x9DD8" /> <!-- Used only for the lips -->
<Texture Name="gUnusedTownShootingGalleryManHairTex" OutName="unused_town_shooting_gallery_man_hair" Format="ci8" Width="16" Height="16" Offset="0xA1D8" />
<Texture Name="gUnusedTownShootingGalleryManEarTex" OutName="unused_town_shooting_gallery_man_ear" Format="ci8" Width="16" Height="16" Offset="0xA2D8" />
<Texture Name="gUnusedTownShootingGalleryManNoseTex" OutName="unused_town_shooting_gallery_man_nose" Format="ci8" Width="8" Height="8" Offset="0xA3D8" />
<Texture Name="gUnusedTownShootingGalleryManEyeTex" OutName="unused_town_shooting_gallery_man_eye" Format="ci8" Width="32" Height="32" Offset="0xA418" />
<Texture Name="gUnusedTownShootingGalleryManSkinTex" OutName="unused_town_shooting_gallery_man_skin" Format="ci8" Width="8" Height="8" Offset="0xA818" />
<!-- Unused Empty DisplayList -->
<DList Name="gBurlyGuyEmptyDL" Offset="0xB730" />
<!-- DisplayList for the Swamp Guide's head -->
<DList Name="gSwampGuideHeadDL" Offset="0xB738" />
<!-- Textures for the Swamp Guide's head -->
<Texture Name="gSwampGuideHairFabricAndSkinTLUT" OutName="swamp_guide_hair_fabric_and_skin_tlut" Format="rgba16" Width="16" Height="16" Offset="0xBCD8" />
<Texture Name="gSwampGuideMouthGoggleAndEyeTLUT" OutName="swamp_guide_mouth_goggle_and_eye_tlut" Format="rgba16" Width="16" Height="16" Offset="0xBED8" />
<Texture Name="gSwampGuideSkinTex" OutName="swamp_guide_skin" Format="ci8" Width="8" Height="8" Offset="0xC0D8" />
<Texture Name="gSwampGuideHatFabricTex" OutName="swamp_guide_hat_fabric" Format="ci8" Width="16" Height="16" Offset="0xC118" />
<Texture Name="gSwampGuideHairAndBeardTex" OutName="swamp_guide_hair_and_beard" Format="ci8" Width="16" Height="16" Offset="0xC218" />
<Texture Name="gSwampGuideHatAndGogglesMetalTex" OutName="swamp_guide_hat_and_goggles_metal" Format="ci8" Width="32" Height="16" Offset="0xC318" />
<Texture Name="gSwampGuideEyeTex" OutName="swamp_guide_eye" Format="ci8" Width="32" Height="32" Offset="0xC518" />
<Texture Name="gSwampGuideGoggleStrapTex" OutName="swamp_guide_goggle_strap" Format="ci8" Width="16" Height="16" Offset="0xC918" />
<Texture Name="gSwampGuideNoseTex" OutName="swamp_guide_nose" Format="rgba16" Width="8" Height="8" Offset="0xCA18" />
<Texture Name="gSwampGuideMouthTex" OutName="swamp_guide_mouth" Format="ci8" Width="16" Height="32" Offset="0xCA98" />
<!-- Burly Guy Animations -->
<Animation Name="gSwampShootingGalleryManHeadScratchEndAnim" Offset="0xD2F8" /> <!-- Original name is "shn_w02TOw01" ("wait02 to wait01"?) -->
<Animation Name="gBurlyGuyEmptyAnim" Offset="0xD3AC" /> <!-- Original name is "shn_wait". Unused and one frame long -->
<Animation Name="gBurlyGuyHandsOnTableAnim" Offset="0xD9D0" /> <!-- Original name is "shn_wait01" -->
<Animation Name="gSwampShootingGalleryManHeadScratchLoopAnim" Offset="0xDFEC" /> <!-- Original name is "shn_wait02" -->
<Animation Name="gSwampGuideChinScratchAnim" Offset="0xE6C4" /><!-- Original name is "shn_wait03" -->
<!-- Burly Guy Limbs -->
<Limb Name="gBurlyGuyWaistLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_WAIST" Offset="0xE6E0" />
<Limb Name="gBurlyGuyLeftThighLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_LEFT_THIGH" Offset="0xE6EC" />
<Limb Name="gBurlyGuyLeftShinLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_LEFT_SHIN" Offset="0xE6F8" />
<Limb Name="gBurlyGuyLeftFootLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_LEFT_FOOT" Offset="0xE704" />
<Limb Name="gBurlyGuyRightThighLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_RIGHT_THIGH" Offset="0xE710" />
<Limb Name="gBurlyGuyRightShinLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_RIGHT_SHIN" Offset="0xE71C" />
<Limb Name="gBurlyGuyRightFootLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_RIGHT_FOOT" Offset="0xE728" />
<Limb Name="gBurlyGuyTorsoLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_TORSO" Offset="0xE734" />
<Limb Name="gBurlyGuyLeftShoulderLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_LEFT_SHOULDER" Offset="0xE740" />
<Limb Name="gBurlyGuyLeftForearmLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_LEFT_FOREARM" Offset="0xE74C" />
<Limb Name="gBurlyGuyLeftHandLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_LEFT_HAND" Offset="0xE758" />
<Limb Name="gBurlyGuyRightShoulderLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_RIGHT_SHOULDER" Offset="0xE764" />
<Limb Name="gBurlyGuyRightForearmLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_RIGHT_FOREARM" Offset="0xE770" />
<Limb Name="gBurlyGuyRightHandLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_RIGHT_HAND" Offset="0xE77C" />
<Limb Name="gBurlyGuyHeadLimb" Type="Standard" EnumName="BURLY_GUY_LIMB_HEAD" Offset="0xE788" />
<!-- Burly Guy Skeleton -->
<Skeleton Name="gBurlyGuySkel" Type="Flex" LimbType="Standard" LimbNone="BURLY_GUY_LIMB_NONE" LimbMax="BURLY_GUY_LIMB_MAX" EnumName="BurlyGuyLimbs" Offset="0xE7D0" />
<!-- DisplayList for the Town Shooting Gallery Man's Head -->
<DList Name="gTownShootingGalleryManHeadDL" Offset="0xF2D0" />
<!-- Textures for the Town Shooting Gallery Man's Head -->
<Texture Name="gTownShootingGalleryManNoseTLUT" OutName="town_shooting_gallery_man_nose_tlut" Format="rgba16" Width="16" Height="16" Offset="0xF790" />
<Texture Name="gTownShootingGalleryManHeadTLUT" OutName="town_shooting_gallery_man_head_tlut" Format="rgba16" Width="16" Height="16" Offset="0xF990" />
<Texture Name="gTownShootingGalleryManEyeOpenTex" OutName="town_shooting_gallery_man_eye_open" Format="rgba16" Width="32" Height="32" Offset="0xFB90" />
<Texture Name="gTownShootingGalleryManEyeClosedTex" OutName="town_shooting_gallery_man_eye_closed" Format="rgba16" Width="32" Height="32" Offset="0x10390" />
<Texture Name="gTownShootingGalleryManBeardAndLipsTex" OutName="town_shooting_gallery_man_beard_and_lips" Format="ci8" Width="32" Height="32" Offset="0x10B90" /> <!-- Used only for the lips -->
<Texture Name="gTownShootingGalleryManNoseTex" OutName="town_shooting_gallery_man_nose" Format="ci8" Width="8" Height="8" Offset="0x10F90" />
<Texture Name="gTownShootingGalleryManEarTex" OutName="town_shooting_gallery_man_ear" Format="ci8" Width="16" Height="16" Offset="0x10FD0" />
<Texture Name="gTownShootingGalleryManHairTex" OutName="town_shooting_gallery_man_hair" Format="ci8" Width="16" Height="16" Offset="0x110D0" />
<Texture Name="gTownShootingGalleryManSkinTex" OutName="town_shooting_gallery_man_skin" Format="ci8" Width="8" Height="8" Offset="0x111D0" />
<!-- Unused Empty Texture Animation -->
<TextureAnimation Name="gBurlyGuyUnused11210TexAnim" Offset="0x11210" />
</File>
</Root>

View File

@ -64,10 +64,10 @@ const ActorInit En_Shn_InitVars = {
};
static AnimationInfoS sAnimations[] = {
{ &object_shn_Anim_00D9D0, 1.0f, 0, -1, 0, 0 },
{ &object_shn_Anim_00D9D0, 1.0f, 0, -1, 0, -4 },
{ &object_shn_Anim_00E6C4, 1.0f, 0, -1, 0, 0 },
{ &object_shn_Anim_00E6C4, 1.0f, 0, -1, 0, -4 },
{ &gBurlyGuyHandsOnTableAnim, 1.0f, 0, -1, 0, 0 },
{ &gBurlyGuyHandsOnTableAnim, 1.0f, 0, -1, 0, -4 },
{ &gSwampGuideChinScratchAnim, 1.0f, 0, -1, 0, 0 },
{ &gSwampGuideChinScratchAnim, 1.0f, 0, -1, 0, -4 },
};
static s32 D_80AE7258[] = { 0, 2, 3, 8, 10, 1 };
@ -345,8 +345,8 @@ void EnShn_Init(Actor* thisx, GlobalContext* globalCtx) {
EnShn* this = THIS;
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gObjectShnSkel, NULL, this->jointTable, this->morphTable,
OBJECT_SHN_LIMB_MAX);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gBurlyGuySkel, NULL, this->jointTable, this->morphTable,
BURLY_GUY_LIMB_MAX);
this->unk_2E8 = -1;
if (gSaveContext.save.weekEventReg[23] & 8) {
func_80AE615C(this, 0);
@ -386,16 +386,16 @@ void EnShn_Update(Actor* thisx, GlobalContext* globalCtx) {
s32 EnShn_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
EnShn* this = THIS;
if (limbIndex == OBJECT_SHN_LIMB_HEAD) {
if (limbIndex == BURLY_GUY_LIMB_HEAD) {
func_80AE6488(this, globalCtx);
*dList = gObjectShnSwampGuideHead;
*dList = gSwampGuideHeadDL;
}
return false;
}
Vec3f D_80AE7270 = { 1200.0f, 0.0f, 0.0f };
void EnShn_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
if (limbIndex == OBJECT_SHN_LIMB_HEAD) {
if (limbIndex == BURLY_GUY_LIMB_HEAD) {
Matrix_MultiplyVector3fByState(&D_80AE7270, &thisx->focus.pos);
Math_Vec3s_Copy(&thisx->focus.rot, &thisx->world.rot);
}
@ -418,7 +418,7 @@ void EnShn_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thi
phi_v0 = 0;
}
if (limbIndex == OBJECT_SHN_LIMB_HEAD) {
if (limbIndex == BURLY_GUY_LIMB_HEAD) {
func_8013AD9C((this->unk_2BA + 0x4000), (this->unk_2BC + this->actor.shape.rot.y + 0x4000), &this->unk_1E8,
&this->unk_1F4, phi_v0, phi_v1);
Matrix_StatePop();

View File

@ -20,8 +20,8 @@ typedef struct EnShn {
/* 0x1E4 */ Player* shnPlayerRef;
/* 0x1E8 */ Vec3f unk_1E8;
/* 0x1F4 */ Vec3s unk_1F4;
/* 0x1FA */ Vec3s jointTable[OBJECT_SHN_LIMB_MAX];
/* 0x25A */ Vec3s morphTable[OBJECT_SHN_LIMB_MAX];
/* 0x1FA */ Vec3s jointTable[BURLY_GUY_LIMB_MAX];
/* 0x25A */ Vec3s morphTable[BURLY_GUY_LIMB_MAX];
/* 0x2BA */ s16 unk_2BA;
/* 0x2BC */ s16 unk_2BC;
/* 0x2BE */ s16 unk_2BE;

View File

@ -5,7 +5,6 @@
*/
#include "z_en_syateki_man.h"
#include "objects/object_shn/object_shn.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10 | ACTOR_FLAG_8000000)
@ -48,9 +47,9 @@ const ActorInit En_Syateki_Man_InitVars = {
};
static AnimationInfo sAnimations[] = {
{ &object_shn_Anim_00D9D0, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
{ &object_shn_Anim_00DFEC, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
{ &object_shn_Anim_00D2F8, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -8.0f },
{ &gBurlyGuyHandsOnTableAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
{ &gSwampShootingGalleryManHeadScratchLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
{ &gSwampShootingGalleryManHeadScratchEndAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -8.0f },
};
static s16 D_809C91C8[] = {
@ -132,11 +131,11 @@ void EnSyatekiMan_Init(Actor* thisx, GlobalContext* globalCtx) {
this->actor.targetMode = 1;
Actor_SetScale(&this->actor, 0.01f);
if (globalCtx->sceneNum == SCENE_SYATEKI_MORI) {
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gObjectShnSkel, &object_shn_Anim_00DFEC, this->jointTable,
this->morphTable, OBJECT_SHN_LIMB_MAX);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gBurlyGuySkel, &gSwampShootingGalleryManHeadScratchLoopAnim,
this->jointTable, this->morphTable, BURLY_GUY_LIMB_MAX);
} else {
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gObjectShnSkel, &object_shn_Anim_00D9D0, this->jointTable,
this->morphTable, OBJECT_SHN_LIMB_MAX);
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gBurlyGuySkel, &gBurlyGuyHandsOnTableAnim, this->jointTable,
this->morphTable, BURLY_GUY_LIMB_MAX);
}
this->actor.colChkInfo.cylRadius = 100;
@ -154,8 +153,8 @@ void EnSyatekiMan_Init(Actor* thisx, GlobalContext* globalCtx) {
this->unk_284 = 0;
this->unk_194 = 0;
this->unk_282 = 0;
this->unk_264 = 0;
this->unk_266 = 0;
this->eyeIndex = 0;
this->blinkTimer = 0;
if (globalCtx->sceneNum == SCENE_SYATEKI_MORI) {
this->path = sp34;
@ -408,7 +407,7 @@ void func_809C6E30(EnSyatekiMan* this, GlobalContext* globalCtx) {
break;
}
if (this->skelAnime.animation == &object_shn_Anim_00D2F8) {
if (this->skelAnime.animation == &gSwampShootingGalleryManHeadScratchEndAnim) {
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimations, 0);
}
@ -1203,32 +1202,32 @@ void func_809C8BF0(EnSyatekiMan* this, GlobalContext* globalCtx) {
}
}
void func_809C8DE8(EnSyatekiMan* this) {
switch (this->unk_266) {
void EnSyatekiMan_Blink(EnSyatekiMan* this) {
switch (this->blinkTimer) {
case 1:
this->unk_264 = 2;
this->eyeIndex = 2;
break;
case 2:
this->unk_264 = 1;
this->eyeIndex = 1;
break;
case 40:
this->unk_266 = 0;
this->blinkTimer = 0;
default:
this->unk_264 = 0;
this->eyeIndex = 0;
break;
}
this->unk_266++;
this->blinkTimer++;
}
void EnSyatekiMan_Update(Actor* thisx, GlobalContext* globalCtx) {
EnSyatekiMan* this = THIS;
this->actionFunc(this, globalCtx);
func_809C8DE8(this);
EnSyatekiMan_Blink(this);
this->actor.focus.pos.y = 70.0f;
Actor_SetFocus(&this->actor, 70.0f);
if (this->unk_26A != 1) {
@ -1241,16 +1240,16 @@ s32 EnSyatekiMan_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx**
Actor* thisx) {
EnSyatekiMan* this = THIS;
if ((globalCtx->sceneNum == SCENE_SYATEKI_MIZU) && (limbIndex == 15)) {
*dList = object_shn_DL_00F2D0;
if ((globalCtx->sceneNum == SCENE_SYATEKI_MIZU) && (limbIndex == BURLY_GUY_LIMB_HEAD)) {
*dList = gTownShootingGalleryManHeadDL;
}
if (limbIndex == 15) {
if (limbIndex == BURLY_GUY_LIMB_HEAD) {
Matrix_InsertTranslation(3000.0f, 0.0f, 0.0f, MTXMODE_APPLY);
Matrix_InsertZRotation_s(this->unk_258.x, MTXMODE_APPLY);
Matrix_InsertXRotation_s(this->unk_258.y, MTXMODE_APPLY);
Matrix_InsertTranslation(-3000.0f, 0.0f, 0.0f, MTXMODE_APPLY);
} else if (limbIndex == 8) {
} else if (limbIndex == BURLY_GUY_LIMB_TORSO) {
Matrix_InsertXRotation_s(-this->unk_25E.y, MTXMODE_APPLY);
}
@ -1261,36 +1260,36 @@ void EnSyatekiMan_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dL
EnSyatekiMan* this = THIS;
Vec3f sp18 = { 1600.0f, 0.0f, 0.0f };
if (limbIndex == 15) {
if (limbIndex == BURLY_GUY_LIMB_HEAD) {
Matrix_MultiplyVector3fByState(&sp18, &this->actor.focus.pos);
}
}
void EnSyatekiMan_Draw(Actor* thisx, GlobalContext* globalCtx) {
static TexturePtr D_809C94B8[] = {
object_shn_Tex_005AC8,
object_shn_Tex_0062C8,
object_shn_Tex_0062C8,
static TexturePtr sEyeTextures[] = {
gSwampShootingGalleryManEyeOpenTex,
gSwampShootingGalleryManEyeHalfTex,
gSwampShootingGalleryManEyeHalfTex,
};
EnSyatekiMan* this = THIS;
s32 pad;
if (globalCtx->sceneNum == SCENE_SYATEKI_MIZU) {
D_809C94B8[0] = object_shn_Tex_00FB90;
D_809C94B8[1] = object_shn_Tex_010390;
D_809C94B8[2] = object_shn_Tex_010390;
sEyeTextures[0] = gTownShootingGalleryManEyeOpenTex;
sEyeTextures[1] = gTownShootingGalleryManEyeClosedTex;
sEyeTextures[2] = gTownShootingGalleryManEyeClosedTex;
} else {
D_809C94B8[0] = object_shn_Tex_005AC8;
D_809C94B8[1] = object_shn_Tex_0062C8;
D_809C94B8[2] = object_shn_Tex_0062C8;
sEyeTextures[0] = gSwampShootingGalleryManEyeOpenTex;
sEyeTextures[1] = gSwampShootingGalleryManEyeHalfTex;
sEyeTextures[2] = gSwampShootingGalleryManEyeHalfTex;
}
OPEN_DISPS(globalCtx->state.gfxCtx);
func_8012C5B0(globalCtx->state.gfxCtx);
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_809C94B8[this->unk_264]));
gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(D_809C94B8[this->unk_264]));
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeIndex]));
gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sEyeTextures[this->eyeIndex]));
SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
EnSyatekiMan_OverrideLimbDraw, EnSyatekiMan_PostLimbDraw, &this->actor);

View File

@ -2,6 +2,8 @@
#define Z_EN_SYATEKI_MAN_H
#include "global.h"
#include "objects/object_shn/object_shn.h"
struct EnSyatekiMan;
@ -24,12 +26,12 @@ typedef struct EnSyatekiMan {
/* 0x018C */ Path* path;
/* 0x0190 */ s32 unk_190;
/* 0x0194 */ s32 unk_194;
/* 0x0198 */ Vec3s jointTable[16];
/* 0x01F8 */ Vec3s morphTable[16];
/* 0x0198 */ Vec3s jointTable[BURLY_GUY_LIMB_MAX];
/* 0x01F8 */ Vec3s morphTable[BURLY_GUY_LIMB_MAX];
/* 0x0258 */ Vec3s unk_258;
/* 0x025E */ Vec3s unk_25E;
/* 0x0264 */ s16 unk_264;
/* 0x0266 */ s16 unk_266;
/* 0x0264 */ s16 eyeIndex;
/* 0x0266 */ s16 blinkTimer;
/* 0x0268 */ UNK_TYPE1 unk268[0x2];
/* 0x026A */ s16 unk_26A;
/* 0x026C */ s16 unk_26C;

View File

@ -9107,7 +9107,7 @@
0x809C8808:("func_809C8808",),
0x809C898C:("func_809C898C",),
0x809C8BF0:("func_809C8BF0",),
0x809C8DE8:("func_809C8DE8",),
0x809C8DE8:("EnSyatekiMan_Blink",),
0x809C8E44:("EnSyatekiMan_Update",),
0x809C8EE4:("EnSyatekiMan_OverrideLimbDraw",),
0x809C8FAC:("EnSyatekiMan_PostLimbDraw",),