Introduce relative offsets: `Offset=".+0x421"`, more sizable `ResourceDesc`s, update spec

This commit is contained in:
Dragorn421 2025-06-10 16:15:04 +02:00
parent 4509895212
commit 01b466c778
No known key found for this signature in database
GPG Key ID: 381AEBAF3D429335
13 changed files with 325 additions and 532 deletions

View File

@ -1,240 +1,11 @@
<Root>
<File Name="object_goma" Segment="6">
<!-- Skeleton -->
<Skeleton Name="gGohmaSkel" Type="Normal" LimbType="Standard" Offset="0x1C8F8"/>
<!-- Limbs -->
<Limb Name="gGohmaRoot1Limb" LimbType="Standard" Offset="0x1C3A8"/>
<Limb Name="gGohmaRoot2Limb" LimbType="Standard" Offset="0x1C3B4"/>
<Limb Name="gGohmaBodyLimb" LimbType="Standard" Offset="0x1C3C0"/>
<Limb Name="gGohmaBodyShellLimb" LimbType="Standard" Offset="0x1C3CC"/>
<Limb Name="gGohmaEyeLimb" LimbType="Standard" Offset="0x1C3D8"/>
<Limb Name="gGohmaTailRootLimb" LimbType="Standard" Offset="0x1C3E4"/>
<Limb Name="gGohmaTail1RootLimb" LimbType="Standard" Offset="0x1C3F0"/>
<Limb Name="gGohmaTail2RootLimb" LimbType="Standard" Offset="0x1C3FC"/>
<Limb Name="gGohmaTail3RootLimb" LimbType="Standard" Offset="0x1C408"/>
<Limb Name="gGohmaTail4RootLimb" LimbType="Standard" Offset="0x1C414"/>
<Limb Name="gGohmaTail4Limb" LimbType="Standard" Offset="0x1C420"/>
<Limb Name="gGohmaTail3Limb" LimbType="Standard" Offset="0x1C42C"/>
<Limb Name="gGohmaTail2Limb" LimbType="Standard" Offset="0x1C438"/>
<Limb Name="gGohmaTail1Limb" LimbType="Standard" Offset="0x1C444"/>
<Limb Name="gGohmaRightLegRootLimb" LimbType="Standard" Offset="0x1C450"/>
<Limb Name="gGohmaRightThighRootLimb" LimbType="Standard" Offset="0x1C45C"/>
<Limb Name="gGohmaRightLegLowerRootLimb" LimbType="Standard" Offset="0x1C468"/>
<Limb Name="gGohmaRightFeetRootLimb" LimbType="Standard" Offset="0x1C474"/>
<Limb Name="gGohmaRightFeetBackRoot1Limb" LimbType="Standard" Offset="0x1C480"/>
<Limb Name="gGohmaRightFeetBackRoot2Limb" LimbType="Standard" Offset="0x1C48C"/>
<Limb Name="gGohmaRightFeetBackLimb" LimbType="Standard" Offset="0x1C498"/>
<Limb Name="gGohmaRightFeetLimb" LimbType="Standard" Offset="0x1C4A4"/>
<Limb Name="gGohmaRightShinLimb" LimbType="Standard" Offset="0x1C4B0"/>
<Limb Name="gGohmaRightKneeRoot1Limb" LimbType="Standard" Offset="0x1C4BC"/>
<Limb Name="gGohmaRightKneeRoot2Limb" LimbType="Standard" Offset="0x1C4C8"/>
<Limb Name="gGohmaRightKneeLimb" LimbType="Standard" Offset="0x1C4D4"/>
<Limb Name="gGohmaRightThighShellRoot1Limb" LimbType="Standard" Offset="0x1C4E0"/>
<Limb Name="gGohmaRightThighShellRoot2Limb" LimbType="Standard" Offset="0x1C4EC"/>
<Limb Name="gGohmaRightThighShellLimb" LimbType="Standard" Offset="0x1C4F8"/>
<Limb Name="gGohmaRightThighLimb" LimbType="Standard" Offset="0x1C504"/>
<Limb Name="gGohmaEyeLidBottomRoot1Limb" LimbType="Standard" Offset="0x1C510"/>
<Limb Name="gGohmaEyeLidBottomRoot2Limb" LimbType="Standard" Offset="0x1C51C"/>
<Limb Name="gGohmaEyeLidBottomLimb" LimbType="Standard" Offset="0x1C528"/>
<Limb Name="gGohmaEyeLidTopRoot1Limb" LimbType="Standard" Offset="0x1C534"/>
<Limb Name="gGohmaEyeLidTopRoot2Limb" LimbType="Standard" Offset="0x1C540"/>
<Limb Name="gGohmaEyeLidTopLimb" LimbType="Standard" Offset="0x1C54C"/>
<Limb Name="gGohmaIrisRoot1Limb" LimbType="Standard" Offset="0x1C558"/>
<Limb Name="gGohmaIrisRoot2Limb" LimbType="Standard" Offset="0x1C564"/>
<Limb Name="gGohmaIrisLimb" LimbType="Standard" Offset="0x1C570"/>
<Limb Name="gGohmaMandiblesRoot1Limb" LimbType="Standard" Offset="0x1C57C"/>
<Limb Name="gGohmaMandiblesRoot2Limb" LimbType="Standard" Offset="0x1C588"/>
<Limb Name="gGohmaMandiblesBodyLimb" LimbType="Standard" Offset="0x1C594"/>
<Limb Name="gGohmaLeftMandiblesRootLimb" LimbType="Standard" Offset="0x1C5A0"/>
<Limb Name="gGohmaLeftMandibles1RootLimb" LimbType="Standard" Offset="0x1C5AC"/>
<Limb Name="gGohmaLeftMandibles2RootLimb" LimbType="Standard" Offset="0x1C5B8"/>
<Limb Name="gGohmaLeftMandibles2Limb" LimbType="Standard" Offset="0x1C5C4"/>
<Limb Name="gGohmaLeftMandibles1Limb" LimbType="Standard" Offset="0x1C5D0"/>
<Limb Name="gGohmaRightMandiblesRootLimb" LimbType="Standard" Offset="0x1C5DC"/>
<Limb Name="gGohmaRightMandibles1RootLimb" LimbType="Standard" Offset="0x1C5E8"/>
<Limb Name="gGohmaRightMandibles2RootLimb" LimbType="Standard" Offset="0x1C5F4"/>
<Limb Name="gGohmaRightMandibles2Limb" LimbType="Standard" Offset="0x1C600"/>
<Limb Name="gGohmaRightMandibles1Limb" LimbType="Standard" Offset="0x1C60C"/>
<Limb Name="gGohmaLeftAntennaRootLimb" LimbType="Standard" Offset="0x1C618"/>
<Limb Name="gGohmaLeftAntennaBodyRootLimb" LimbType="Standard" Offset="0x1C624"/>
<Limb Name="gGohmaLeftAntennaShellRootLimb" LimbType="Standard" Offset="0x1C630"/>
<Limb Name="gGohmaLeftAntennaClawRootLimb" LimbType="Standard" Offset="0x1C63C"/>
<Limb Name="gGohmaLeftAntennaClawLimb" LimbType="Standard" Offset="0x1C648"/>
<Limb Name="gGohmaLeftAntennaShellLimb" LimbType="Standard" Offset="0x1C654"/>
<Limb Name="gGohmaLeftAntennaBodyLimb" LimbType="Standard" Offset="0x1C660"/>
<Limb Name="gGohmaRightAntennaRootLimb" LimbType="Standard" Offset="0x1C66C"/>
<Limb Name="gGohmaRightAntennaBodyRootLimb" LimbType="Standard" Offset="0x1C678"/>
<Limb Name="gGohmaRightAntennaShellRootLimb" LimbType="Standard" Offset="0x1C684"/>
<Limb Name="gGohmaRightAntennaClawRootLimb" LimbType="Standard" Offset="0x1C690"/>
<Limb Name="gGohmaRightAntennaClawLimb" LimbType="Standard" Offset="0x1C69C"/>
<Limb Name="gGohmaRightAntennaShellLimb" LimbType="Standard" Offset="0x1C6A8"/>
<Limb Name="gGohmaRightAntennaBodyLimb" LimbType="Standard" Offset="0x1C6B4"/>
<Limb Name="gGohmaLeftLegRootLimb" LimbType="Standard" Offset="0x1C6C0"/>
<Limb Name="gGohmaLeftThighRootLimb" LimbType="Standard" Offset="0x1C6CC"/>
<Limb Name="gGohmaLeftLegLowerRootLimb" LimbType="Standard" Offset="0x1C6D8"/>
<Limb Name="gGohmaLeftFeetRootLimb" LimbType="Standard" Offset="0x1C6E4"/>
<Limb Name="gGohmaLeftFeetBackRoot1Limb" LimbType="Standard" Offset="0x1C6F0"/>
<Limb Name="gGohmaLeftFeetBackRoot2Limb" LimbType="Standard" Offset="0x1C6FC"/>
<Limb Name="gGohmaLeftFeetBackLimb" LimbType="Standard" Offset="0x1C708"/>
<Limb Name="gGohmaLeftFeetLimb" LimbType="Standard" Offset="0x1C714"/>
<Limb Name="gGohmaLeftShinLimb" LimbType="Standard" Offset="0x1C720"/>
<Limb Name="gGohmaLeftKneeRoot1Limb" LimbType="Standard" Offset="0x1C72C"/>
<Limb Name="gGohmaLeftKneeRoot2Limb" LimbType="Standard" Offset="0x1C738"/>
<Limb Name="gGohmaLeftKneeLimb" LimbType="Standard" Offset="0x1C744"/>
<Limb Name="gGohmaLeftThighShellRoot1Limb" LimbType="Standard" Offset="0x1C750"/>
<Limb Name="gGohmaLeftThighShellRoot2Limb" LimbType="Standard" Offset="0x1C75C"/>
<Limb Name="gGohmaLeftThighShellLimb" LimbType="Standard" Offset="0x1C768"/>
<Limb Name="gGohmaLeftThighLimb" LimbType="Standard" Offset="0x1C774"/>
<Limb Name="gGohmaBodyShellBackRoot1Limb" LimbType="Standard" Offset="0x1C780"/>
<Limb Name="gGohmaBodyShellBackRoot2Limb" LimbType="Standard" Offset="0x1C78C"/>
<Limb Name="gGohmaBodyShellBackLimb" LimbType="Standard" Offset="0x1C798"/>
<!-- Vertices -->
<Array Name="gGohmaLeftAntennaBodyVtx" Count="14" Offset="0x12690">
<Vtx/>
</Array>
<Array Name="gGohmaLeftAntennaShellVtx" Count="45" Offset="0x12828">
<Vtx/>
</Array>
<Array Name="gGohmaRightAntennaBodyVtx" Count="14" Offset="0x12C90">
<Vtx/>
</Array>
<Array Name="gGohmaRightAntennaShellVtx" Count="48" Offset="0x12E28">
<Vtx/>
</Array>
<Array Name="gGohmaRightMandibles1Vtx" Count="6" Offset="0x132C0">
<Vtx/>
</Array>
<Array Name="gGohmaRightMandibles2Vtx" Count="11" Offset="0x133D0">
<Vtx/>
</Array>
<Array Name="gGohmaLeftMandibles1Vtx" Count="6" Offset="0x13590">
<Vtx/>
</Array>
<Array Name="gGohmaLeftMandibles2Vtx" Count="11" Offset="0x136A0">
<Vtx/>
</Array>
<Array Name="gGohmaBodyVtx" Count="32" Offset="0x13860">
<Vtx/>
</Array>
<Array Name="gGohmaBodyShellVtx" Count="117" Offset="0x13B48">
<Vtx/>
</Array>
<Array Name="gGohmaBodyShellBackVtx" Count="9" Offset="0x14420">
<Vtx/>
</Array>
<Array Name="gGohmaLeftThighShellVtx" Count="14" Offset="0x14560">
<Vtx/>
</Array>
<Array Name="gGohmaRightThighShellVtx" Count="14" Offset="0x146F0">
<Vtx/>
</Array>
<Array Name="gGohmaEyeVtx" Count="25" Offset="0x14880">
<Vtx/>
</Array>
<Array Name="gGohmaLeftFeetVtx" Count="40" Offset="0x14B40">
<Vtx/>
</Array>
<Array Name="gGohmaRightFeetVtx" Count="37" Offset="0x14F18">
<Vtx/>
</Array>
<Array Name="gGohmaIrisVtx" Count="9" Offset="0x152A8">
<Vtx/>
</Array>
<Array Name="gGohmaLeftKneeVtx" Count="47" Offset="0x153E8">
<Vtx/>
</Array>
<Array Name="gGohmaRightKneeVtx" Count="48" Offset="0x15828">
<Vtx/>
</Array>
<Array Name="gGohmaLeftFeetBackVtx" Count="13" Offset="0x15C78">
<Vtx/>
</Array>
<Array Name="gGohmaRightFeetBackVtx" Count="13" Offset="0x15E58">
<Vtx/>
</Array>
<Array Name="gGohmaLeftThighVtx" Count="49" Offset="0x16038">
<Vtx/>
</Array>
<Array Name="gGohmaRightThighVtx" Count="49" Offset="0x16490">
<Vtx/>
</Array>
<Array Name="gGohmaEyeLidTopVtx" Count="29" Offset="0x168E8">
<Vtx/>
</Array>
<Array Name="gGohmaEyeLidBottomVtx" Count="29" Offset="0x16BD0">
<Vtx/>
</Array>
<Array Name="gGohmaMandiblesBodyVtx" Count="20" Offset="0x16EA8">
<Vtx/>
</Array>
<Array Name="gGohmaLeftShinVtx" Count="22" Offset="0x17108">
<Vtx/>
</Array>
<Array Name="gGohmaRightShinVtx" Count="22" Offset="0x173A0">
<Vtx/>
</Array>
<Array Name="gGohmaTail1Vtx" Count="19" Offset="0x17638">
<Vtx/>
</Array>
<Array Name="gGohmaTail2Vtx" Count="19" Offset="0x17830">
<Vtx/>
</Array>
<Array Name="gGohmaTail3Vtx" Count="14" Offset="0x17A28">
<Vtx/>
</Array>
<Array Name="gGohmaTail4Vtx" Count="25" Offset="0x17BF0">
<Vtx/>
</Array>
<Array Name="gGohmaLeftAntennaClawVtx" Count="26" Offset="0x17E68">
<Vtx/>
</Array>
<Array Name="gGohmaRightAntennaClawVtx" Count="23" Offset="0x18120">
<Vtx/>
</Array>
<!-- Display Lists-->
<DList Name="gGohmaBodyDL" Offset="0x13A60"/>
<DList Name="gGohmaBodyShellDL" Offset="0x14298"/>
<DList Name="gGohmaEyeDL" Offset="0x14A10"/>
<DList Name="gGohmaTail4DL" Offset="0x17D80"/>
<DList Name="gGohmaTail3DL" Offset="0x17B08"/>
<DList Name="gGohmaTail2DL" Offset="0x17960"/>
<DList Name="gGohmaTail1DL" Offset="0x17768"/>
<DList Name="gGohmaRightFeetBackDL" Offset="0x15F28"/>
<DList Name="gGohmaRightFeetDL" Offset="0x15168"/>
<DList Name="gGohmaRightShinDL" Offset="0x17500"/>
<DList Name="gGohmaRightKneeDL" Offset="0x15B28"/>
<DList Name="gGohmaRightThighShellDL" Offset="0x147D0"/>
<DList Name="gGohmaRightThighDL" Offset="0x167A0"/>
<DList Name="gGohmaEyeLidBottomDL" Offset="0x16DA0"/>
<DList Name="gGohmaEyeLidTopDL" Offset="0x16AB8"/>
<DList Name="gGohmaIrisDL" Offset="0x15338"/>
<DList Name="gGohmaMandiblesBodyDL" Offset="0x16FE8"/>
<DList Name="gGohmaLeftMandibles2DL" Offset="0x13750"/>
<DList Name="gGohmaLeftMandibles1DL" Offset="0x135F0"/>
<DList Name="gGohmaRightMandibles2DL" Offset="0x13480"/>
<DList Name="gGohmaRightMandibles1DL" Offset="0x13320"/>
<DList Name="gGohmaLeftAntennaClawDL" Offset="0x18008"/>
<DList Name="gGohmaLeftAntennaShellDL" Offset="0x12AF8"/>
<DList Name="gGohmaLeftAntennaBodyDL" Offset="0x12770"/>
<DList Name="gGohmaRightAntennaClawDL" Offset="0x18290"/>
<DList Name="gGohmaRightAntennaShellDL" Offset="0x13128"/>
<DList Name="gGohmaRightAntennaBodyDL" Offset="0x12D70"/>
<DList Name="gGohmaLeftFeetBackDL" Offset="0x15D48"/>
<DList Name="gGohmaLeftFeetDL" Offset="0x14DC0"/>
<DList Name="gGohmaLeftShinDL" Offset="0x17268"/>
<DList Name="gGohmaLeftKneeDL" Offset="0x156D8"/>
<DList Name="gGohmaLeftThighShellDL" Offset="0x14640"/>
<DList Name="gGohmaLeftThighDL" Offset="0x16348"/>
<DList Name="gGohmaBodyShellBackDL" Offset="0x144B0"/>
<!-- Animations -->
<!-- Animations 1 -->
<Animation Name="gGohmaStandAnim" Offset="0xAE8"/>
<Animation Name="gGohmaHangAnim" Offset="0x193C"/> <!-- hang from the ceiling -->
<Animation Name="gGohmaWalkAnim" Offset="0x2360"/>
<Animation Name="gGohmaPrepareEggsAnim" Offset="0x29F0"/> <!-- hanging, shaking -->
<Animation Name="gGohmaViolentAttackAnim" Offset="0x39D0"/> <!-- unused -->
<Animation Name="gGohmaAttackAnim" Offset="0x4318"/>
<Animation Name="gGohmaRestAfterAttackAnim" Offset="0x4A20"/>
<Animation Name="gGohmaRecoverAfterAttackAnim" Offset="0x5330"/>
@ -249,10 +20,144 @@
<Animation Name="gGohmaEyeRollAnim" Offset="0x10918"/>
<Animation Name="gGohmaLayEggsAnim" Offset="0x113BC"/>
<Animation Name="gGohmaIdleCrouchedAnim" Offset="0x12678"/>
<Animation Name="gGohmaWalkCrouchedAnim" Offset="0x1D74C"/>
<!-- Unused animations -->
<Animation Name="gGohmaViolentAttackAnim" Offset="0x39D0"/>
<!-- Vertices and DLists -->
<Array Name="gGohmaLeftAntennaBodyVtx" Count="14" Offset="0x12690">
<Vtx/>
</Array>
<DList Name="gGohmaLeftAntennaBodyDL" Offset="0x12770"/>
<Array Name="gGohmaLeftAntennaShellVtx" Count="45" Offset="0x12828">
<Vtx/>
</Array>
<DList Name="gGohmaLeftAntennaShellDL" Offset="0x12AF8"/>
<Array Name="gGohmaRightAntennaBodyVtx" Count="14" Offset="0x12C90">
<Vtx/>
</Array>
<DList Name="gGohmaRightAntennaBodyDL" Offset="0x12D70"/>
<Array Name="gGohmaRightAntennaShellVtx" Count="48" Offset="0x12E28">
<Vtx/>
</Array>
<DList Name="gGohmaRightAntennaShellDL" Offset="0x13128"/>
<Array Name="gGohmaRightMandibles1Vtx" Count="6" Offset="0x132C0">
<Vtx/>
</Array>
<DList Name="gGohmaRightMandibles1DL" Offset="0x13320"/>
<Array Name="gGohmaRightMandibles2Vtx" Count="11" Offset="0x133D0">
<Vtx/>
</Array>
<DList Name="gGohmaRightMandibles2DL" Offset="0x13480"/>
<Array Name="gGohmaLeftMandibles1Vtx" Count="6" Offset="0x13590">
<Vtx/>
</Array>
<DList Name="gGohmaLeftMandibles1DL" Offset="0x135F0"/>
<Array Name="gGohmaLeftMandibles2Vtx" Count="11" Offset="0x136A0">
<Vtx/>
</Array>
<DList Name="gGohmaLeftMandibles2DL" Offset="0x13750"/>
<Array Name="gGohmaBodyVtx" Count="32" Offset="0x13860">
<Vtx/>
</Array>
<DList Name="gGohmaBodyDL" Offset="0x13A60"/>
<Array Name="gGohmaBodyShellVtx" Count="117" Offset="0x13B48">
<Vtx/>
</Array>
<DList Name="gGohmaBodyShellDL" Offset="0x14298"/>
<Array Name="gGohmaBodyShellBackVtx" Count="9" Offset="0x14420">
<Vtx/>
</Array>
<DList Name="gGohmaBodyShellBackDL" Offset="0x144B0"/>
<Array Name="gGohmaLeftThighShellVtx" Count="14" Offset="0x14560">
<Vtx/>
</Array>
<DList Name="gGohmaLeftThighShellDL" Offset="0x14640"/>
<Array Name="gGohmaRightThighShellVtx" Count="14" Offset="0x146F0">
<Vtx/>
</Array>
<DList Name="gGohmaRightThighShellDL" Offset="0x147D0"/>
<Array Name="gGohmaEyeVtx" Count="25" Offset="0x14880">
<Vtx/>
</Array>
<DList Name="gGohmaEyeDL" Offset="0x14A10"/>
<Array Name="gGohmaLeftFeetVtx" Count="40" Offset="0x14B40">
<Vtx/>
</Array>
<DList Name="gGohmaLeftFeetDL" Offset="0x14DC0"/>
<Array Name="gGohmaRightFeetVtx" Count="37" Offset="0x14F18">
<Vtx/>
</Array>
<DList Name="gGohmaRightFeetDL" Offset="0x15168"/>
<Array Name="gGohmaIrisVtx" Count="9" Offset="0x152A8">
<Vtx/>
</Array>
<DList Name="gGohmaIrisDL" Offset="0x15338"/>
<Array Name="gGohmaLeftKneeVtx" Count="47" Offset="0x153E8">
<Vtx/>
</Array>
<DList Name="gGohmaLeftKneeDL" Offset="0x156D8"/>
<Array Name="gGohmaRightKneeVtx" Count="48" Offset="0x15828">
<Vtx/>
</Array>
<DList Name="gGohmaRightKneeDL" Offset="0x15B28"/>
<Array Name="gGohmaLeftFeetBackVtx" Count="13" Offset="0x15C78">
<Vtx/>
</Array>
<DList Name="gGohmaLeftFeetBackDL" Offset="0x15D48"/>
<Array Name="gGohmaRightFeetBackVtx" Count="13" Offset="0x15E58">
<Vtx/>
</Array>
<DList Name="gGohmaRightFeetBackDL" Offset="0x15F28"/>
<Array Name="gGohmaLeftThighVtx" Count="49" Offset="0x16038">
<Vtx/>
</Array>
<DList Name="gGohmaLeftThighDL" Offset="0x16348"/>
<Array Name="gGohmaRightThighVtx" Count="49" Offset="0x16490">
<Vtx/>
</Array>
<DList Name="gGohmaRightThighDL" Offset="0x167A0"/>
<Array Name="gGohmaEyeLidTopVtx" Count="29" Offset="0x168E8">
<Vtx/>
</Array>
<DList Name="gGohmaEyeLidTopDL" Offset="0x16AB8"/>
<Array Name="gGohmaEyeLidBottomVtx" Count="29" Offset="0x16BD0">
<Vtx/>
</Array>
<DList Name="gGohmaEyeLidBottomDL" Offset="0x16DA0"/>
<Array Name="gGohmaMandiblesBodyVtx" Count="20" Offset="0x16EA8">
<Vtx/>
</Array>
<DList Name="gGohmaMandiblesBodyDL" Offset="0x16FE8"/>
<Array Name="gGohmaLeftShinVtx" Count="22" Offset="0x17108">
<Vtx/>
</Array>
<DList Name="gGohmaLeftShinDL" Offset="0x17268"/>
<Array Name="gGohmaRightShinVtx" Count="22" Offset="0x173A0">
<Vtx/>
</Array>
<DList Name="gGohmaRightShinDL" Offset="0x17500"/>
<Array Name="gGohmaTail1Vtx" Count="19" Offset="0x17638">
<Vtx/>
</Array>
<DList Name="gGohmaTail1DL" Offset="0x17768"/>
<Array Name="gGohmaTail2Vtx" Count="19" Offset="0x17830">
<Vtx/>
</Array>
<DList Name="gGohmaTail2DL" Offset="0x17960"/>
<Array Name="gGohmaTail3Vtx" Count="14" Offset="0x17A28">
<Vtx/>
</Array>
<DList Name="gGohmaTail3DL" Offset="0x17B08"/>
<Array Name="gGohmaTail4Vtx" Count="25" Offset="0x17BF0">
<Vtx/>
</Array>
<DList Name="gGohmaTail4DL" Offset="0x17D80"/>
<Array Name="gGohmaLeftAntennaClawVtx" Count="26" Offset="0x17E68">
<Vtx/>
</Array>
<DList Name="gGohmaLeftAntennaClawDL" Offset="0x18008"/>
<Array Name="gGohmaRightAntennaClawVtx" Count="23" Offset="0x18120">
<Vtx/>
</Array>
<DList Name="gGohmaRightAntennaClawDL" Offset="0x18290"/>
<!-- Limb textures -->
<Texture Name="gGohmaBodyTex" Format="rgba16" Width="16" Height="16" Offset="0x183A8"/>
@ -263,16 +168,113 @@
<Texture Name="gGohmaIrisTex" Format="rgba16" Width="32" Height="32" Offset="0x193A8"/>
<!-- Boss title card -->
<Texture Name="gGohmaTitleCardTex" Format="ia8" Width="128" Height="80" Offset="0x19BA8"/>
<Version Pattern="ntsc-.*|gc-jp.*|gc-us.*|ique-cn">
<Texture Name="gGohmaTitleCardTex" Format="ia8" Width="128" Height="80" Offset="0x19BA8"/>
</Version>
<Version Pattern="pal-.*|gc-eu.*">
<Texture Name="gGohmaTitleCardTex" Format="ia8" Width="128" Height="120" Offset="0x19BA8"/>
</Version>
<!-- Limbs -->
<Limb Name="gGohmaRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaBodyLimb" LimbType="Standard"/>
<Limb Name="gGohmaBodyShellLimb" LimbType="Standard"/>
<Limb Name="gGohmaEyeLimb" LimbType="Standard"/>
<Limb Name="gGohmaTailRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaTail1RootLimb" LimbType="Standard"/>
<Limb Name="gGohmaTail2RootLimb" LimbType="Standard"/>
<Limb Name="gGohmaTail3RootLimb" LimbType="Standard"/>
<Limb Name="gGohmaTail4RootLimb" LimbType="Standard"/>
<Limb Name="gGohmaTail4Limb" LimbType="Standard"/>
<Limb Name="gGohmaTail3Limb" LimbType="Standard"/>
<Limb Name="gGohmaTail2Limb" LimbType="Standard"/>
<Limb Name="gGohmaTail1Limb" LimbType="Standard"/>
<Limb Name="gGohmaRightLegRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightThighRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightLegLowerRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightFeetRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightFeetBackRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaRightFeetBackRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaRightFeetBackLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightFeetLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightShinLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightKneeRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaRightKneeRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaRightKneeLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightThighShellRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaRightThighShellRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaRightThighShellLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightThighLimb" LimbType="Standard"/>
<Limb Name="gGohmaEyeLidBottomRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaEyeLidBottomRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaEyeLidBottomLimb" LimbType="Standard"/>
<Limb Name="gGohmaEyeLidTopRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaEyeLidTopRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaEyeLidTopLimb" LimbType="Standard"/>
<Limb Name="gGohmaIrisRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaIrisRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaIrisLimb" LimbType="Standard"/>
<Limb Name="gGohmaMandiblesRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaMandiblesRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaMandiblesBodyLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftMandiblesRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftMandibles1RootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftMandibles2RootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftMandibles2Limb" LimbType="Standard"/>
<Limb Name="gGohmaLeftMandibles1Limb" LimbType="Standard"/>
<Limb Name="gGohmaRightMandiblesRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightMandibles1RootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightMandibles2RootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightMandibles2Limb" LimbType="Standard"/>
<Limb Name="gGohmaRightMandibles1Limb" LimbType="Standard"/>
<Limb Name="gGohmaLeftAntennaRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftAntennaBodyRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftAntennaShellRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftAntennaClawRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftAntennaClawLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftAntennaShellLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftAntennaBodyLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightAntennaRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightAntennaBodyRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightAntennaShellRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightAntennaClawRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightAntennaClawLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightAntennaShellLimb" LimbType="Standard"/>
<Limb Name="gGohmaRightAntennaBodyLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftLegRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftThighRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftLegLowerRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftFeetRootLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftFeetBackRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaLeftFeetBackRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaLeftFeetBackLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftFeetLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftShinLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftKneeRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaLeftKneeRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaLeftKneeLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftThighShellRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaLeftThighShellRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaLeftThighShellLimb" LimbType="Standard"/>
<Limb Name="gGohmaLeftThighLimb" LimbType="Standard"/>
<Limb Name="gGohmaBodyShellBackRoot1Limb" LimbType="Standard"/>
<Limb Name="gGohmaBodyShellBackRoot2Limb" LimbType="Standard"/>
<Limb Name="gGohmaBodyShellBackLimb" LimbType="Standard"/>
<!-- Skeleton -->
<LimbTable Name="gGohmaLimbs" LimbType="Standard" Count="85"/>
<Skeleton Name="gGohmaSkel" Type="Normal" LimbType="Standard"/>
<!-- Animations 2 -->
<Animation Name="gGohmaWalkCrouchedAnim" Offset=".+0xE4C"/>
<!-- Door -->
<Array Name="gGohmaDoorVtx" Count="12" Offset="0x1D760">
<Array Name="gGohmaDoorVtx" Count="12" Offset=".+0x4">
<Vtx/>
</Array>
<DList Name="gGohmaDoorDL" Offset="0x1D820"/>
<Collision Name="gGohmaDoorCol" Offset="0x1D9D0"/>
<Texture Name="gGohmaDoorTex" Format="rgba16" Width="32" Height="32" Offset="0x1DA00"/>
<!-- Vertices -->
<DList Name="gGohmaDoorDL" Length="22"/>
<Collision Name="gGohmaDoorCol" Offset=".+0x100"/>
<Texture Name="gGohmaDoorTex" Format="rgba16" Width="32" Height="32" Offset=".+0x4"/>
</File>
</Root>

View File

@ -1,276 +0,0 @@
<Root>
<File Name="object_goma" Segment="6">
<!-- Skeleton -->
<Skeleton Name="gGohmaSkel" Type="Normal" LimbType="Standard" Offset="0x1DCF8"/>
<!-- Limbs -->
<Limb Name="gGohmaRoot1Limb" LimbType="Standard" Offset="0x1D7A8"/>
<Limb Name="gGohmaRoot2Limb" LimbType="Standard" Offset="0x1D7B4"/>
<Limb Name="gGohmaBodyLimb" LimbType="Standard" Offset="0x1D7C0"/>
<Limb Name="gGohmaBodyShellLimb" LimbType="Standard" Offset="0x1D7CC"/>
<Limb Name="gGohmaEyeLimb" LimbType="Standard" Offset="0x1D7D8"/>
<Limb Name="gGohmaTailRootLimb" LimbType="Standard" Offset="0x1D7E4"/>
<Limb Name="gGohmaTail1RootLimb" LimbType="Standard" Offset="0x1D7F0"/>
<Limb Name="gGohmaTail2RootLimb" LimbType="Standard" Offset="0x1D7FC"/>
<Limb Name="gGohmaTail3RootLimb" LimbType="Standard" Offset="0x1D808"/>
<Limb Name="gGohmaTail4RootLimb" LimbType="Standard" Offset="0x1D814"/>
<Limb Name="gGohmaTail4Limb" LimbType="Standard" Offset="0x1D820"/>
<Limb Name="gGohmaTail3Limb" LimbType="Standard" Offset="0x1D82C"/>
<Limb Name="gGohmaTail2Limb" LimbType="Standard" Offset="0x1D838"/>
<Limb Name="gGohmaTail1Limb" LimbType="Standard" Offset="0x1D844"/>
<Limb Name="gGohmaRightLegRootLimb" LimbType="Standard" Offset="0x1D850"/>
<Limb Name="gGohmaRightThighRootLimb" LimbType="Standard" Offset="0x1D85C"/>
<Limb Name="gGohmaRightLegLowerRootLimb" LimbType="Standard" Offset="0x1D868"/>
<Limb Name="gGohmaRightFeetRootLimb" LimbType="Standard" Offset="0x1D874"/>
<Limb Name="gGohmaRightFeetBackRoot1Limb" LimbType="Standard" Offset="0x1D880"/>
<Limb Name="gGohmaRightFeetBackRoot2Limb" LimbType="Standard" Offset="0x1D88C"/>
<Limb Name="gGohmaRightFeetBackLimb" LimbType="Standard" Offset="0x1D898"/>
<Limb Name="gGohmaRightFeetLimb" LimbType="Standard" Offset="0x1D8A4"/>
<Limb Name="gGohmaRightShinLimb" LimbType="Standard" Offset="0x1D8B0"/>
<Limb Name="gGohmaRightKneeRoot1Limb" LimbType="Standard" Offset="0x1D8BC"/>
<Limb Name="gGohmaRightKneeRoot2Limb" LimbType="Standard" Offset="0x1D8C8"/>
<Limb Name="gGohmaRightKneeLimb" LimbType="Standard" Offset="0x1D8D4"/>
<Limb Name="gGohmaRightThighShellRoot1Limb" LimbType="Standard" Offset="0x1D8E0"/>
<Limb Name="gGohmaRightThighShellRoot2Limb" LimbType="Standard" Offset="0x1D8EC"/>
<Limb Name="gGohmaRightThighShellLimb" LimbType="Standard" Offset="0x1D8F8"/>
<Limb Name="gGohmaRightThighLimb" LimbType="Standard" Offset="0x1D904"/>
<Limb Name="gGohmaEyeLidBottomRoot1Limb" LimbType="Standard" Offset="0x1D910"/>
<Limb Name="gGohmaEyeLidBottomRoot2Limb" LimbType="Standard" Offset="0x1D91C"/>
<Limb Name="gGohmaEyeLidBottomLimb" LimbType="Standard" Offset="0x1D928"/>
<Limb Name="gGohmaEyeLidTopRoot1Limb" LimbType="Standard" Offset="0x1D934"/>
<Limb Name="gGohmaEyeLidTopRoot2Limb" LimbType="Standard" Offset="0x1D940"/>
<Limb Name="gGohmaEyeLidTopLimb" LimbType="Standard" Offset="0x1D94C"/>
<Limb Name="gGohmaIrisRoot1Limb" LimbType="Standard" Offset="0x1D958"/>
<Limb Name="gGohmaIrisRoot2Limb" LimbType="Standard" Offset="0x1D964"/>
<Limb Name="gGohmaIrisLimb" LimbType="Standard" Offset="0x1D970"/>
<Limb Name="gGohmaMandiblesRoot1Limb" LimbType="Standard" Offset="0x1D97C"/>
<Limb Name="gGohmaMandiblesRoot2Limb" LimbType="Standard" Offset="0x1D988"/>
<Limb Name="gGohmaMandiblesBodyLimb" LimbType="Standard" Offset="0x1D994"/>
<Limb Name="gGohmaLeftMandiblesRootLimb" LimbType="Standard" Offset="0x1D9A0"/>
<Limb Name="gGohmaLeftMandibles1RootLimb" LimbType="Standard" Offset="0x1D9AC"/>
<Limb Name="gGohmaLeftMandibles2RootLimb" LimbType="Standard" Offset="0x1D9B8"/>
<Limb Name="gGohmaLeftMandibles2Limb" LimbType="Standard" Offset="0x1D9C4"/>
<Limb Name="gGohmaLeftMandibles1Limb" LimbType="Standard" Offset="0x1D9D0"/>
<Limb Name="gGohmaRightMandiblesRootLimb" LimbType="Standard" Offset="0x1D9DC"/>
<Limb Name="gGohmaRightMandibles1RootLimb" LimbType="Standard" Offset="0x1D9E8"/>
<Limb Name="gGohmaRightMandibles2RootLimb" LimbType="Standard" Offset="0x1D9F4"/>
<Limb Name="gGohmaRightMandibles2Limb" LimbType="Standard" Offset="0x1DA00"/>
<Limb Name="gGohmaRightMandibles1Limb" LimbType="Standard" Offset="0x1DA0C"/>
<Limb Name="gGohmaLeftAntennaRootLimb" LimbType="Standard" Offset="0x1DA18"/>
<Limb Name="gGohmaLeftAntennaBodyRootLimb" LimbType="Standard" Offset="0x1DA24"/>
<Limb Name="gGohmaLeftAntennaShellRootLimb" LimbType="Standard" Offset="0x1DA30"/>
<Limb Name="gGohmaLeftAntennaClawRootLimb" LimbType="Standard" Offset="0x1DA3C"/>
<Limb Name="gGohmaLeftAntennaClawLimb" LimbType="Standard" Offset="0x1DA48"/>
<Limb Name="gGohmaLeftAntennaShellLimb" LimbType="Standard" Offset="0x1DA54"/>
<Limb Name="gGohmaLeftAntennaBodyLimb" LimbType="Standard" Offset="0x1DA60"/>
<Limb Name="gGohmaRightAntennaRootLimb" LimbType="Standard" Offset="0x1DA6C"/>
<Limb Name="gGohmaRightAntennaBodyRootLimb" LimbType="Standard" Offset="0x1DA78"/>
<Limb Name="gGohmaRightAntennaShellRootLimb" LimbType="Standard" Offset="0x1DA84"/>
<Limb Name="gGohmaRightAntennaClawRootLimb" LimbType="Standard" Offset="0x1DA90"/>
<Limb Name="gGohmaRightAntennaClawLimb" LimbType="Standard" Offset="0x1DA9C"/>
<Limb Name="gGohmaRightAntennaShellLimb" LimbType="Standard" Offset="0x1DAA8"/>
<Limb Name="gGohmaRightAntennaBodyLimb" LimbType="Standard" Offset="0x1DAB4"/>
<Limb Name="gGohmaLeftLegRootLimb" LimbType="Standard" Offset="0x1DAC0"/>
<Limb Name="gGohmaLeftThighRootLimb" LimbType="Standard" Offset="0x1DACC"/>
<Limb Name="gGohmaLeftLegLowerRootLimb" LimbType="Standard" Offset="0x1DAD8"/>
<Limb Name="gGohmaLeftFeetRootLimb" LimbType="Standard" Offset="0x1DAE4"/>
<Limb Name="gGohmaLeftFeetBackRoot1Limb" LimbType="Standard" Offset="0x1DAF0"/>
<Limb Name="gGohmaLeftFeetBackRoot2Limb" LimbType="Standard" Offset="0x1DAFC"/>
<Limb Name="gGohmaLeftFeetBackLimb" LimbType="Standard" Offset="0x1DB08"/>
<Limb Name="gGohmaLeftFeetLimb" LimbType="Standard" Offset="0x1DB14"/>
<Limb Name="gGohmaLeftShinLimb" LimbType="Standard" Offset="0x1DB20"/>
<Limb Name="gGohmaLeftKneeRoot1Limb" LimbType="Standard" Offset="0x1DB2C"/>
<Limb Name="gGohmaLeftKneeRoot2Limb" LimbType="Standard" Offset="0x1DB38"/>
<Limb Name="gGohmaLeftKneeLimb" LimbType="Standard" Offset="0x1DB44"/>
<Limb Name="gGohmaLeftThighShellRoot1Limb" LimbType="Standard" Offset="0x1DB50"/>
<Limb Name="gGohmaLeftThighShellRoot2Limb" LimbType="Standard" Offset="0x1DB5C"/>
<Limb Name="gGohmaLeftThighShellLimb" LimbType="Standard" Offset="0x1DB68"/>
<Limb Name="gGohmaLeftThighLimb" LimbType="Standard" Offset="0x1DB74"/>
<Limb Name="gGohmaBodyShellBackRoot1Limb" LimbType="Standard" Offset="0x1DB80"/>
<Limb Name="gGohmaBodyShellBackRoot2Limb" LimbType="Standard" Offset="0x1DB8C"/>
<Limb Name="gGohmaBodyShellBackLimb" LimbType="Standard" Offset="0x1DB98"/>
<!-- Vertices -->
<Array Name="gGohmaLeftAntennaBodyVtx" Count="14" Offset="0x12690">
<Vtx/>
</Array>
<Array Name="gGohmaLeftAntennaShellVtx" Count="45" Offset="0x12828">
<Vtx/>
</Array>
<Array Name="gGohmaRightAntennaBodyVtx" Count="14" Offset="0x12C90">
<Vtx/>
</Array>
<Array Name="gGohmaRightAntennaShellVtx" Count="48" Offset="0x12E28">
<Vtx/>
</Array>
<Array Name="gGohmaRightMandibles1Vtx" Count="6" Offset="0x132C0">
<Vtx/>
</Array>
<Array Name="gGohmaRightMandibles2Vtx" Count="11" Offset="0x133D0">
<Vtx/>
</Array>
<Array Name="gGohmaLeftMandibles1Vtx" Count="6" Offset="0x13590">
<Vtx/>
</Array>
<Array Name="gGohmaLeftMandibles2Vtx" Count="11" Offset="0x136A0">
<Vtx/>
</Array>
<Array Name="gGohmaBodyVtx" Count="32" Offset="0x13860">
<Vtx/>
</Array>
<Array Name="gGohmaBodyShellVtx" Count="117" Offset="0x13B48">
<Vtx/>
</Array>
<Array Name="gGohmaBodyShellBackVtx" Count="9" Offset="0x14420">
<Vtx/>
</Array>
<Array Name="gGohmaLeftThighShellVtx" Count="14" Offset="0x14560">
<Vtx/>
</Array>
<Array Name="gGohmaRightThighShellVtx" Count="14" Offset="0x146F0">
<Vtx/>
</Array>
<Array Name="gGohmaEyeVtx" Count="25" Offset="0x14880">
<Vtx/>
</Array>
<Array Name="gGohmaLeftFeetVtx" Count="40" Offset="0x14B40">
<Vtx/>
</Array>
<Array Name="gGohmaRightFeetVtx" Count="37" Offset="0x14F18">
<Vtx/>
</Array>
<Array Name="gGohmaIrisVtx" Count="9" Offset="0x152A8">
<Vtx/>
</Array>
<Array Name="gGohmaLeftKneeVtx" Count="47" Offset="0x153E8">
<Vtx/>
</Array>
<Array Name="gGohmaRightKneeVtx" Count="48" Offset="0x15828">
<Vtx/>
</Array>
<Array Name="gGohmaLeftFeetBackVtx" Count="13" Offset="0x15C78">
<Vtx/>
</Array>
<Array Name="gGohmaRightFeetBackVtx" Count="13" Offset="0x15E58">
<Vtx/>
</Array>
<Array Name="gGohmaLeftThighVtx" Count="49" Offset="0x16038">
<Vtx/>
</Array>
<Array Name="gGohmaRightThighVtx" Count="49" Offset="0x16490">
<Vtx/>
</Array>
<Array Name="gGohmaEyeLidTopVtx" Count="29" Offset="0x168E8">
<Vtx/>
</Array>
<Array Name="gGohmaEyeLidBottomVtx" Count="29" Offset="0x16BD0">
<Vtx/>
</Array>
<Array Name="gGohmaMandiblesBodyVtx" Count="20" Offset="0x16EA8">
<Vtx/>
</Array>
<Array Name="gGohmaLeftShinVtx" Count="22" Offset="0x17108">
<Vtx/>
</Array>
<Array Name="gGohmaRightShinVtx" Count="22" Offset="0x173A0">
<Vtx/>
</Array>
<Array Name="gGohmaTail1Vtx" Count="19" Offset="0x17638">
<Vtx/>
</Array>
<Array Name="gGohmaTail2Vtx" Count="19" Offset="0x17830">
<Vtx/>
</Array>
<Array Name="gGohmaTail3Vtx" Count="14" Offset="0x17A28">
<Vtx/>
</Array>
<Array Name="gGohmaTail4Vtx" Count="25" Offset="0x17BF0">
<Vtx/>
</Array>
<Array Name="gGohmaLeftAntennaClawVtx" Count="26" Offset="0x17E68">
<Vtx/>
</Array>
<Array Name="gGohmaRightAntennaClawVtx" Count="23" Offset="0x18120">
<Vtx/>
</Array>
<!-- Display Lists-->
<DList Name="gGohmaBodyDL" Offset="0x13A60"/>
<DList Name="gGohmaBodyShellDL" Offset="0x14298"/>
<DList Name="gGohmaEyeDL" Offset="0x14A10"/>
<DList Name="gGohmaTail4DL" Offset="0x17D80"/>
<DList Name="gGohmaTail3DL" Offset="0x17B08"/>
<DList Name="gGohmaTail2DL" Offset="0x17960"/>
<DList Name="gGohmaTail1DL" Offset="0x17768"/>
<DList Name="gGohmaRightFeetBackDL" Offset="0x15F28"/>
<DList Name="gGohmaRightFeetDL" Offset="0x15168"/>
<DList Name="gGohmaRightShinDL" Offset="0x17500"/>
<DList Name="gGohmaRightKneeDL" Offset="0x15B28"/>
<DList Name="gGohmaRightThighShellDL" Offset="0x147D0"/>
<DList Name="gGohmaRightThighDL" Offset="0x167A0"/>
<DList Name="gGohmaEyeLidBottomDL" Offset="0x16DA0"/>
<DList Name="gGohmaEyeLidTopDL" Offset="0x16AB8"/>
<DList Name="gGohmaIrisDL" Offset="0x15338"/>
<DList Name="gGohmaMandiblesBodyDL" Offset="0x16FE8"/>
<DList Name="gGohmaLeftMandibles2DL" Offset="0x13750"/>
<DList Name="gGohmaLeftMandibles1DL" Offset="0x135F0"/>
<DList Name="gGohmaRightMandibles2DL" Offset="0x13480"/>
<DList Name="gGohmaRightMandibles1DL" Offset="0x13320"/>
<DList Name="gGohmaLeftAntennaClawDL" Offset="0x18008"/>
<DList Name="gGohmaLeftAntennaShellDL" Offset="0x12AF8"/>
<DList Name="gGohmaLeftAntennaBodyDL" Offset="0x12770"/>
<DList Name="gGohmaRightAntennaClawDL" Offset="0x18290"/>
<DList Name="gGohmaRightAntennaShellDL" Offset="0x13128"/>
<DList Name="gGohmaRightAntennaBodyDL" Offset="0x12D70"/>
<DList Name="gGohmaLeftFeetBackDL" Offset="0x15D48"/>
<DList Name="gGohmaLeftFeetDL" Offset="0x14DC0"/>
<DList Name="gGohmaLeftShinDL" Offset="0x17268"/>
<DList Name="gGohmaLeftKneeDL" Offset="0x156D8"/>
<DList Name="gGohmaLeftThighShellDL" Offset="0x14640"/>
<DList Name="gGohmaLeftThighDL" Offset="0x16348"/>
<DList Name="gGohmaBodyShellBackDL" Offset="0x144B0"/>
<!-- Animations -->
<Animation Name="gGohmaStandAnim" Offset="0xAE8"/>
<Animation Name="gGohmaHangAnim" Offset="0x193C"/> <!-- hang from the ceiling -->
<Animation Name="gGohmaWalkAnim" Offset="0x2360"/>
<Animation Name="gGohmaPrepareEggsAnim" Offset="0x29F0"/> <!-- hanging, shaking -->
<Animation Name="gGohmaAttackAnim" Offset="0x4318"/>
<Animation Name="gGohmaRestAfterAttackAnim" Offset="0x4A20"/>
<Animation Name="gGohmaRecoverAfterAttackAnim" Offset="0x5330"/>
<Animation Name="gGohmaCrashAnim" Offset="0x58C0"/> <!-- when struck down from the ceiling -->
<Animation Name="gGohmaLandAnim" Offset="0x5F28"/> <!-- when jumping down from the ceiling -->
<Animation Name="gGohmaClimbAnim" Offset="0x66DC"/> <!-- when climbing a wall -->
<Animation Name="gGohmaDamageAnim" Offset="0x6E60"/>
<Animation Name="gGohmaDeathAnim" Offset="0xB2FC"/>
<Animation Name="gGohmaPrepareAttackAnim" Offset="0xC468"/>
<Animation Name="gGohmaStunnedAnim" Offset="0xCCD8"/>
<Animation Name="gGohmaInitialLandingAnim" Offset="0xF70C"/> <!-- when landing in the pre-fight cutscene -->
<Animation Name="gGohmaEyeRollAnim" Offset="0x10918"/>
<Animation Name="gGohmaLayEggsAnim" Offset="0x113BC"/>
<Animation Name="gGohmaIdleCrouchedAnim" Offset="0x12678"/>
<Animation Name="gGohmaWalkCrouchedAnim" Offset="0x1EB4C"/>
<!-- Unused animations -->
<Animation Name="gGohmaViolentAttackAnim" Offset="0x39D0"/>
<!-- Limb textures -->
<Texture Name="gGohmaBodyTex" Format="rgba16" Width="16" Height="16" Offset="0x183A8"/>
<Texture Name="gGohmaShellUndersideTex" Format="rgba16" Width="16" Height="16" Offset="0x185A8"/>
<Texture Name="gGohmaDarkShellTex" Format="rgba16" Width="16" Height="16" Offset="0x187A8"/>
<Texture Name="gGohmaShellTex" Format="rgba16" Width="32" Height="32" Offset="0x189A8"/>
<Texture Name="gGohmaEyeTex" Format="rgba16" Width="16" Height="16" Offset="0x191A8"/>
<Texture Name="gGohmaIrisTex" Format="rgba16" Width="32" Height="32" Offset="0x193A8"/>
<!-- Boss title card -->
<Texture Name="gGohmaTitleCardTex" Format="ia8" Width="128" Height="120" Offset="0x19BA8"/>
<!-- Door -->
<Array Name="gGohmaDoorVtx" Count="12" Offset="0x1EB60">
<Vtx/>
</Array>
<DList Name="gGohmaDoorDL" Offset="0x1EC20"/>
<Collision Name="gGohmaDoorCol" Offset="0x1EDD0"/>
<Texture Name="gGohmaDoorTex" Format="rgba16" Width="32" Height="32" Offset="0x1EE00"/>
</File>
</Root>

View File

@ -430,7 +430,7 @@ assets:
- name: objects/object_gol
xml_path: assets/xml/objects/object_gol.xml
- name: objects/object_goma
xml_path: assets/xml/objects/object_goma_pal.xml
xml_path: assets/xml/objects/object_goma.xml
- name: objects/object_goroiwa
xml_path: assets/xml/objects/object_goroiwa.xml
- name: objects/object_gr

View File

@ -422,7 +422,7 @@ assets:
- name: objects/object_gol
xml_path: assets/xml/objects/object_gol.xml
- name: objects/object_goma
xml_path: assets/xml/objects/object_goma_pal.xml
xml_path: assets/xml/objects/object_goma.xml
- name: objects/object_goroiwa
xml_path: assets/xml/objects/object_goroiwa.xml
- name: objects/object_gr

View File

@ -422,7 +422,7 @@ assets:
- name: objects/object_gol
xml_path: assets/xml/objects/object_gol.xml
- name: objects/object_goma
xml_path: assets/xml/objects/object_goma_pal.xml
xml_path: assets/xml/objects/object_goma.xml
- name: objects/object_goroiwa
xml_path: assets/xml/objects/object_goroiwa.xml
- name: objects/object_gr

View File

@ -434,7 +434,7 @@ assets:
- name: objects/object_gol
xml_path: assets/xml/objects/object_gol.xml
- name: objects/object_goma
xml_path: assets/xml/objects/object_goma_pal.xml
xml_path: assets/xml/objects/object_goma.xml
- name: objects/object_goroiwa
xml_path: assets/xml/objects/object_goroiwa.xml
- name: objects/object_gr

View File

@ -434,7 +434,7 @@ assets:
- name: objects/object_gol
xml_path: assets/xml/objects/object_gol.xml
- name: objects/object_goma
xml_path: assets/xml/objects/object_goma_pal.xml
xml_path: assets/xml/objects/object_goma.xml
- name: objects/object_goroiwa
xml_path: assets/xml/objects/object_goroiwa.xml
- name: objects/object_gr

View File

@ -281,7 +281,17 @@ def _get_resources_fileelem_to_resourcescollection_pass1(
try:
symbol_name = reselem.attrib["Name"]
if "Offset" in reselem.attrib:
offset = int(reselem.attrib["Offset"], 16)
offset_str = reselem.attrib["Offset"]
if offset_str.startswith(".+"):
if prev_resource_end_offset is None:
raise Exception(
f"Resource {symbol_name} has a relative Offset"
" and previous resource has no known end offset"
)
rel_offset = int(offset_str.removeprefix(".+"), 16)
offset = prev_resource_end_offset + rel_offset
else:
offset = int(offset_str, 16)
else:
if prev_resource_end_offset is None:
raise Exception(

View File

@ -3,6 +3,7 @@
import dataclasses
import enum
from typing import Optional
from xml.etree.ElementTree import Element
from ..n64 import G_IM_FMT, G_IM_SIZ
@ -13,6 +14,7 @@ from .base import (
ResourcesDescCollectionsPool,
ResourceHandlerNeedsPass2Exception,
BaseromFileBackingMemory,
ResourceHasNoSizeError,
)
from . import xml_errors
@ -27,20 +29,29 @@ class GfxMicroCode(enum.Enum):
@dataclasses.dataclass(eq=False)
class DListResourceDesc(ResourceDesc):
length: Optional[int]
ucode: GfxMicroCode
raw_pointers: set[int] = dataclasses.field(default_factory=set)
"""Pointers in the dlist that are fine to keep raw ("in hex") instead of using symbols"""
def get_size(self):
if self.length is None:
raise ResourceHasNoSizeError()
return self.length * 8
def handler_DList(symbol_name, offset, collection, reselem: Element):
xml_errors.check_attrib(
reselem, {"Name"}, {"Offset", "Ucode", "RawPointers"} | STATIC_ATTRIB
reselem, {"Name"}, {"Offset", "Length", "Ucode", "RawPointers"} | STATIC_ATTRIB
)
length = None
if "Length" in reselem.attrib:
length = int(reselem.attrib["Length"])
if "Ucode" in reselem.attrib:
ucode = GfxMicroCode[reselem.attrib["Ucode"].upper()]
else:
ucode = GfxMicroCode.F3DEX2
res = DListResourceDesc(symbol_name, offset, collection, reselem, ucode)
res = DListResourceDesc(symbol_name, offset, collection, reselem, length, ucode)
raw_pointers_str = reselem.attrib.get("RawPointers")
if raw_pointers_str:
for rp_str in raw_pointers_str.split(","):
@ -83,6 +94,9 @@ class Vec3sArrayResourceDesc(ResourceDesc):
class VtxArrayResourceDesc(ResourceDesc):
count: int
def get_size(self):
return self.count * 0x10
def handler_Array(symbol_name, offset, collection, reselem: Element):
xml_errors.check_attrib(reselem, {"Name", "Count"}, {"Offset"} | STATIC_ATTRIB)

View File

@ -54,10 +54,17 @@ then `<ExternalFile OutPath="assets/objects/gameplay_keep/"/>` refers to that ga
Resource elements describe resources. Resources are pieces of data corresponding to a symbol each.
Two attributes are required on all resource elements: `Name` and `Offset`.
One attribute is required on all resource elements: `Name`.
- `Name` is the name of the symbol associated to the resource.
- `Offset` is the location in bytes from the start of the file data.
Another attribute, optional, is common to all resource elements: `Offset`.
If `Offset` is set to a (hexadecimal) number such as `Offset="0x421"`, it specifies the location of the resource in bytes from the start of the file data.
If `Offset` is not set, the resource is assumed to start where the previous resource ended, or at 0 if the resource is the first in the `<File>`.
`Offset` can also be set to be a relative offset like `Offset=".+0x421"`, which makes the resource location be that many bytes after the end of the previous resource.
## `Blob`
@ -74,12 +81,14 @@ Unstructured binary data.
## `DList`
```xml
<DList Name="gNameDL" Offset="0x1230" Ucode="f3dex2" RawPointers="0x08000000,0x09000000"/>
<DList Name="gNameDL" Offset="0x1230" Length="123" Ucode="f3dex2" RawPointers="0x08000000,0x09000000"/>
```
A display list.
- Optional attributes: `Ucode`, `RawPointers`
- Optional attributes: `Length`, `Ucode`, `RawPointers`
`Length` can be set to indicate the length (amount of `Gfx` double-words) of the dlist. If not set, the dlist length is automatic.
`Ucode` (defaults to `f3dex2`) picks the graphics microcode for which to disassemble the dlist. It may be `f3dex` or `f3dex2`.

View File

@ -10,13 +10,15 @@ from .base import (
ResourceDesc,
ResourcesDescCollection,
ResourceHandlerNeedsPass2Exception,
ResourceHasNoSizeError,
)
from . import xml_errors
@dataclasses.dataclass(eq=False)
class CollisionResourceDesc(ResourceDesc):
pass
def get_size(self):
return 0x2C
def handler_Collision(symbol_name, offset, collection, reselem: Element):
@ -26,7 +28,8 @@ def handler_Collision(symbol_name, offset, collection, reselem: Element):
@dataclasses.dataclass(eq=False)
class AnimationResourceDesc(ResourceDesc):
pass
def get_size(self):
return 0x10
def handler_Animation(symbol_name, offset, collection, reselem: Element):
@ -133,6 +136,14 @@ class SkeletonResourceDesc(ResourceDesc):
limb_enum_none_member_name: Optional[str]
limb_enum_max_member_name: Optional[str]
def get_size(self):
skel_size = {
SkeletonType.NORMAL: 0x8,
}.get(self.type)
if skel_size is None:
raise ResourceHasNoSizeError()
return skel_size
def handler_Skeleton(symbol_name, offset, collection, reselem: Element):
xml_errors.check_attrib(
@ -160,6 +171,14 @@ class LimbResourceDesc(ResourceDesc):
limb_type: LimbType
limb_enum_member_name: Optional[str]
def get_size(self):
limb_size = {
LimbType.STANDARD: 0xC,
}.get(self.limb_type)
if limb_size is None:
raise ResourceHasNoSizeError()
return limb_size
def handler_Limb(symbol_name, offset, collection, reselem: Element):
xml_errors.check_attrib(reselem, {"Name", "LimbType"}, {"Offset", "EnumName"})
@ -179,6 +198,9 @@ class LimbTableResourceDesc(ResourceDesc):
limb_type: LimbType
count: int
def get_size(self):
return self.count * 4
def handler_LimbTable(symbol_name, offset, collection, reselem: Element):
xml_errors.check_attrib(reselem, {"Name", "LimbType", "Count"}, {"Offset"})

View File

@ -1215,6 +1215,11 @@ class DListResource(Resource, can_size_be_unknown=True):
self.target_ucode = target_ucode
self.ignored_raw_pointers: set[int] = set()
def set_length(self, length: int):
if length != ((self.range_end - self.range_start) // 8):
raise ValueError("length already set and different")
self.range_end = self.range_start + length * 8
def try_parse_data(self, memory_context):
offset = self.range_start
@ -1332,8 +1337,13 @@ class DListResource(Resource, can_size_be_unknown=True):
return pygfxd.gfxd_macro_dflt()
if self.range_end is None:
dlist_data = self.file.data[self.range_start :]
else:
dlist_data = self.file.data[self.range_start : self.range_end]
size = gfxdis(
input_buffer=self.file.data[self.range_start :],
input_buffer=dlist_data,
target=self.target_ucode.gfxd_ucode,
vtx_callback=vtx_cb,
timg_callback=timg_cb,

View File

@ -229,6 +229,8 @@ def register_resource_handlers():
n64resources.GfxMicroCode.F3DEX2: dlist_resources.Ucode.f3dex2,
}[resource_desc.ucode],
)
if resource_desc.length is not None:
res.set_length(resource_desc.length)
res.ignored_raw_pointers |= resource_desc.raw_pointers
return res