mirror of https://github.com/zeldaret/mm.git
`En_Ru`: OK (Unused OoT Ruto) (#1035)
* Ruto: OK * Ruto: better walking water sfx function name and less fake match * Ruto: formater pls * Ruto: Requested changes, better display list documentation * Ruto: requested changes * Ruto: formater pass * Ruto: casts were removeable * Apply suggestions from code review Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update src/overlays/actors/ovl_En_Ru/z_en_ru.c Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * Ruto: array size fix * Ruto: data shuffle solved * Ruto: requested name changes * Ru: requested changes * Ru: count instead of size Co-authored-by: Isghj8 <isghj8@gmail.com> Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
This commit is contained in:
parent
8f2fe9b3c7
commit
7ed0d14bfe
|
|
@ -1,78 +1,98 @@
|
|||
<Root>
|
||||
<!-- Adult Ruto from OoT (Unused). -->
|
||||
<!-- Object is Copy from OoT, including documentation. -->
|
||||
<File Name="object_ru2" Segment="6">
|
||||
<Animation Name="object_ru2_Anim_0004CC" Offset="0x4CC" />
|
||||
<Animation Name="object_ru2_Anim_000DE8" Offset="0xDE8" />
|
||||
<!-- <Blob Name="object_ru2_Blob_000DF8" Size="0x128" Offset="0xDF8" /> -->
|
||||
<Texture Name="object_ru2_Tex_000F20" OutName="tex_000F20" Format="rgba16" Width="32" Height="32" Offset="0xF20" />
|
||||
<Texture Name="object_ru2_Tex_001720" OutName="tex_001720" Format="ci8" Width="8" Height="8" Offset="0x1720" />
|
||||
<Texture Name="object_ru2_Tex_001760" OutName="tex_001760" Format="ci8" Width="16" Height="16" Offset="0x1760" />
|
||||
<Texture Name="object_ru2_Tex_001860" OutName="tex_001860" Format="ci8" Width="16" Height="16" Offset="0x1860" />
|
||||
<Texture Name="object_ru2_Tex_001960" OutName="tex_001960" Format="ci8" Width="8" Height="8" Offset="0x1960" />
|
||||
<Texture Name="object_ru2_Tex_0019A0" OutName="tex_0019A0" Format="rgba16" Width="32" Height="32" Offset="0x19A0" />
|
||||
<Texture Name="object_ru2_Tex_0021A0" OutName="tex_0021A0" Format="ci8" Width="8" Height="8" Offset="0x21A0" />
|
||||
<Texture Name="object_ru2_Tex_0021E0" OutName="tex_0021E0" Format="ci8" Width="16" Height="16" Offset="0x21E0" />
|
||||
<!-- <Blob Name="object_ru2_Blob_0022E0" Size="0x1000" Offset="0x22E0" /> -->
|
||||
<Texture Name="object_ru2_Tex_0032E0" OutName="tex_0032E0" Format="rgba16" Width="8" Height="16" Offset="0x32E0" />
|
||||
<DList Name="object_ru2_DL_003EB0" Offset="0x3EB0" />
|
||||
<Texture Name="object_ru2_TLUT_0043C0" OutName="tlut_0043C0" Format="rgba16" Width="16" Height="16" Offset="0x43C0" />
|
||||
<Texture Name="object_ru2_Tex_0045C0" OutName="tex_0045C0" Format="ci8" Width="8" Height="8" Offset="0x45C0" />
|
||||
<Texture Name="object_ru2_Tex_004600" OutName="tex_004600" Format="ci8" Width="8" Height="8" Offset="0x4600" />
|
||||
<Texture Name="object_ru2_Tex_004640" OutName="tex_004640" Format="ci8" Width="16" Height="16" Offset="0x4640" />
|
||||
<Texture Name="object_ru2_Tex_004740" OutName="tex_004740" Format="ci8" Width="16" Height="16" Offset="0x4740" />
|
||||
<Texture Name="object_ru2_Tex_004840" OutName="tex_004840" Format="ci8" Width="32" Height="64" Offset="0x4840" />
|
||||
<Texture Name="object_ru2_Tex_005040" OutName="tex_005040" Format="ci8" Width="32" Height="32" Offset="0x5040" />
|
||||
<Texture Name="object_ru2_Tex_005440" OutName="tex_005440" Format="ci8" Width="8" Height="8" Offset="0x5440" />
|
||||
<Texture Name="object_ru2_Tex_005480" OutName="tex_005480" Format="ci8" Width="16" Height="16" Offset="0x5480" />
|
||||
<Texture Name="object_ru2_Tex_005580" OutName="tex_005580" Format="ci8" Width="8" Height="8" Offset="0x5580" />
|
||||
<Texture Name="object_ru2_Tex_0055C0" OutName="tex_0055C0" Format="ci8" Width="8" Height="32" Offset="0x55C0" />
|
||||
<Texture Name="object_ru2_Tex_0056C0" OutName="tex_0056C0" Format="rgba16" Width="32" Height="32" Offset="0x56C0" />
|
||||
<DList Name="object_ru2_DL_0088F0" Offset="0x88F0" />
|
||||
<DList Name="object_ru2_DL_008D30" Offset="0x8D30" />
|
||||
<DList Name="object_ru2_DL_009680" Offset="0x9680" />
|
||||
<DList Name="object_ru2_DL_009998" Offset="0x9998" />
|
||||
<DList Name="object_ru2_DL_009B80" Offset="0x9B80" />
|
||||
<DList Name="object_ru2_DL_009F50" Offset="0x9F50" />
|
||||
<DList Name="object_ru2_DL_00A030" Offset="0xA030" />
|
||||
<DList Name="object_ru2_DL_00A150" Offset="0xA150" />
|
||||
<DList Name="object_ru2_DL_00A468" Offset="0xA468" />
|
||||
<DList Name="object_ru2_DL_00A650" Offset="0xA650" />
|
||||
<DList Name="object_ru2_DL_00AA20" Offset="0xAA20" />
|
||||
<DList Name="object_ru2_DL_00AB00" Offset="0xAB00" />
|
||||
<DList Name="object_ru2_DL_00AC20" Offset="0xAC20" />
|
||||
<DList Name="object_ru2_DL_00B048" Offset="0xB048" />
|
||||
<DList Name="object_ru2_DL_00B178" Offset="0xB178" />
|
||||
<DList Name="object_ru2_DL_00B568" Offset="0xB568" />
|
||||
<DList Name="object_ru2_DL_00B8E0" Offset="0xB8E0" />
|
||||
<DList Name="object_ru2_DL_00BD08" Offset="0xBD08" />
|
||||
<DList Name="object_ru2_DL_00BE38" Offset="0xBE38" />
|
||||
<DList Name="object_ru2_DL_00C228" Offset="0xC228" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C5A0" Type="Standard" EnumName="OBJECT_RU2_LIMB_01" Offset="0xC5A0" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C5AC" Type="Standard" EnumName="OBJECT_RU2_LIMB_02" Offset="0xC5AC" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C5B8" Type="Standard" EnumName="OBJECT_RU2_LIMB_03" Offset="0xC5B8" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C5C4" Type="Standard" EnumName="OBJECT_RU2_LIMB_04" Offset="0xC5C4" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C5D0" Type="Standard" EnumName="OBJECT_RU2_LIMB_05" Offset="0xC5D0" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C5DC" Type="Standard" EnumName="OBJECT_RU2_LIMB_06" Offset="0xC5DC" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C5E8" Type="Standard" EnumName="OBJECT_RU2_LIMB_07" Offset="0xC5E8" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C5F4" Type="Standard" EnumName="OBJECT_RU2_LIMB_08" Offset="0xC5F4" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C600" Type="Standard" EnumName="OBJECT_RU2_LIMB_09" Offset="0xC600" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C60C" Type="Standard" EnumName="OBJECT_RU2_LIMB_0A" Offset="0xC60C" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C618" Type="Standard" EnumName="OBJECT_RU2_LIMB_0B" Offset="0xC618" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C624" Type="Standard" EnumName="OBJECT_RU2_LIMB_0C" Offset="0xC624" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C630" Type="Standard" EnumName="OBJECT_RU2_LIMB_0D" Offset="0xC630" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C63C" Type="Standard" EnumName="OBJECT_RU2_LIMB_0E" Offset="0xC63C" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C648" Type="Standard" EnumName="OBJECT_RU2_LIMB_0F" Offset="0xC648" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C654" Type="Standard" EnumName="OBJECT_RU2_LIMB_10" Offset="0xC654" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C660" Type="Standard" EnumName="OBJECT_RU2_LIMB_11" Offset="0xC660" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C66C" Type="Standard" EnumName="OBJECT_RU2_LIMB_12" Offset="0xC66C" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C678" Type="Standard" EnumName="OBJECT_RU2_LIMB_13" Offset="0xC678" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C684" Type="Standard" EnumName="OBJECT_RU2_LIMB_14" Offset="0xC684" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C690" Type="Standard" EnumName="OBJECT_RU2_LIMB_15" Offset="0xC690" />
|
||||
<Limb Name="object_ru2_Standardlimb_00C69C" Type="Standard" EnumName="OBJECT_RU2_LIMB_16" Offset="0xC69C" />
|
||||
<Skeleton Name="object_ru2_Skel_00C700" Type="Flex" LimbType="Standard" LimbNone="OBJECT_RU2_LIMB_NONE" LimbMax="OBJECT_RU2_LIMB_MAX" EnumName="ObjectRu2Limb" Offset="0xC700" />
|
||||
<Animation Name="object_ru2_Anim_00D3DC" Offset="0xD3DC" />
|
||||
<Animation Name="object_ru2_Anim_00DCAC" Offset="0xDCAC" />
|
||||
<Animation Name="object_ru2_Anim_00E630" Offset="0xE630" />
|
||||
<Animation Name="object_ru2_Anim_00F03C" Offset="0xF03C" />
|
||||
<Animation Name="object_ru2_Anim_00F8B8" Offset="0xF8B8" />
|
||||
<!-- Adult Ruto Animations -->
|
||||
<!-- gAdultRutoCrossingArmsAnim: Used in OoT when the sages seal ganon in the Evil Realm. -->
|
||||
<Animation Name="gAdultRutoCrossingArmsAnim" Offset="0x04CC"/>
|
||||
<Animation Name="gAdultRutoIdleAnim" Offset="0xDE8"/>
|
||||
|
||||
<!-- Adult Ruto Palettes -->
|
||||
<Texture Name="gAdultRutoTLUT1" OutName="adult_ruto_tlut_1" Format="rgba16" Width="144" Height="1" Offset="0xE00"/>
|
||||
<Texture Name="gAdultRutoTLUT2" OutName="adult_ruto_tlut_2" Format="rgba16" Width="16" Height="16" Offset="0x43C0"/>
|
||||
|
||||
<!-- Adult Ruto Eye Textures -->
|
||||
<Texture Name="gAdultRutoEyeOpenTex" OutName="adult_ruto_eye_open" Format="rgba16" Width="32" Height="32" Offset="0xF20"/>
|
||||
<Texture Name="gAdultRutoEyeHalfTex" OutName="adult_ruto_eye_half" Format="rgba16" Width="32" Height="32" Offset="0x22E0"/>
|
||||
<Texture Name="gAdultRutoEyeClosedTex" OutName="adult_ruto_eye_closed" Format="rgba16" Width="32" Height="32" Offset="0x2AE0"/>
|
||||
|
||||
<!-- Adult Ruto Textures -->
|
||||
<Texture Name="gAdultRutoSkinGradient" OutName="adult_ruto_skin_gradient" Format="ci8" Width="8" Height="8" Offset="0x1720" TlutOffset="0xE00"/>
|
||||
<Texture Name="gAdultRutoEar1Tex" OutName="adult_ruto_ear_1" Format="ci8" Width="16" Height="16" Offset="0x1760" TlutOffset="0xE00"/>
|
||||
<Texture Name="gAdultRutoHeadGradientTex" OutName="adult_ruto_head_gradient" Format="ci8" Width="16" Height="16" Offset="0x1860" TlutOffset="0xE00"/>
|
||||
<Texture Name="gAdultRutoHeadHoleTex" OutName="adult_ruto_head_hole" Format="ci8" Width="8" Height="8" Offset="0x1960" TlutOffset="0xE00"/>
|
||||
<Texture Name="gAdultRutoMouthTex" OutName="adult_ruto_mouth" Format="rgba16" Width="32" Height="32" Offset="0x19A0"/>
|
||||
<Texture Name="gAdultRutoTex_21A0" OutName="adult_ruto_tex_21A0" Format="ci8" Width="8" Height="8" Offset="0x21A0" TlutOffset="0xE00"/>
|
||||
<Texture Name="gAdultRutoEar2Tex" OutName="adult_ruto_ear_2" Format="ci8" Width="16" Height="16" Offset="0x21E0" TlutOffset="0xE00"/>
|
||||
<Texture Name="gAdultRutoEarringTex" OutName="adult_ruto_earring" Format="rgba16" Width="8" Height="16" Offset="0x32E0"/>
|
||||
<Texture Name="gAdultRutoTailGradientTex" OutName="adult_ruto_tail_gradient" Format="ci8" Width="8" Height="8" Offset="0x45C0" TlutOffset="0x43C0"/>
|
||||
<Texture Name="gAdultRutoTex_4600" OutName="adult_ruto_tex_4600" Format="ci8" Width="8" Height="8" Offset="0x4600" TlutOffset="0x43C0"/>
|
||||
<Texture Name="gAdultRutoBackOfHandTex" OutName="adult_ruto_back_of_hand" Format="ci8" Width="16" Height="16" Offset="0x4640" TlutOffset="0x43C0"/>
|
||||
<Texture Name="gAdultRutoTex_4740" OutName="adult_ruto_tex_4740" Format="ci8" Width="16" Height="16" Offset="0x4740" TlutOffset="0x43C0"/>
|
||||
<Texture Name="gAdultRutoSkinPattern1Tex" OutName="adult_ruto_skin_pattern_1" Format="ci8" Width="32" Height="64" Offset="0x4840" TlutOffset="0x43C0"/>
|
||||
<Texture Name="gAdultRutoSkinPattern2Tex" OutName="adult_ruto_skin_pattern_2" Format="ci8" Width="32" Height="32" Offset="0x5040" TlutOffset="0x43C0"/>
|
||||
<Texture Name="gAdultRutoTex_5440" OutName="adult_ruto_tex_5440" Format="ci8" Width="8" Height="8" Offset="0x5440" TlutOffset="0x43C0"/>
|
||||
<Texture Name="gAdultRutoTex_5480" OutName="adult_ruto_tex_5480" Format="ci8" Width="16" Height="16" Offset="0x5480" TlutOffset="0x43C0"/>
|
||||
<Texture Name="gAdultRutoTex_5580" OutName="adult_ruto_tex_5580" Format="ci8" Width="8" Height="8" Offset="0x5580" TlutOffset="0x43C0"/>
|
||||
|
||||
|
||||
<!-- Adult Ruto Limb DisplayLists -->
|
||||
<DList Name="gAdultRutoLeftThighDL" Offset="0xB8E0"/>
|
||||
<DList Name="gAdultRutoLeftLegDL" Offset="0xBE38"/>
|
||||
<DList Name="gAdultRutoLeftFootDL" Offset="0xC228"/>
|
||||
<DList Name="gAdultRutoLeftTailDL" Offset="0xBD08"/>
|
||||
<DList Name="gAdultRutoRightThighDL" Offset="0xAC20"/>
|
||||
<DList Name="gAdultRutoRightLegDL" Offset="0xB178"/>
|
||||
<DList Name="gAdultRutoRightFootDL" Offset="0xB568"/>
|
||||
<DList Name="gAdultRutoRightTailDL" Offset="0xB048"/>
|
||||
<DList Name="gAdultRutoTorsoDL" Offset="0x8D30"/>
|
||||
<DList Name="gAdultRutoLeftUpperArmDL" Offset="0xA150"/>
|
||||
<DList Name="gAdultRutoLeftUpperWingDL" Offset="0xAA20"/>
|
||||
<DList Name="gAdultRutoLeftLowerWingDL" Offset="0xAB00"/>
|
||||
<DList Name="gAdultRutoLeftForearmDL" Offset="0xA468"/>
|
||||
<DList Name="gAdultRutoLeftHandDL" Offset="0xA650"/>
|
||||
<DList Name="gAdultRutoRightUpperArmDL" Offset="0x9680"/>
|
||||
<DList Name="gAdultRutoRightUpperWingDL" Offset="0x9F50"/>
|
||||
<DList Name="gAdultRutoRightLowerWingDL" Offset="0xA030"/>
|
||||
<DList Name="gAdultRutoRightForearmDL" Offset="0x9998"/>
|
||||
<DList Name="gAdultRutoRightHandDL" Offset="0x9B80"/>
|
||||
<DList Name="gAdultRutoHeadDL" Offset="0x3EB0"/>
|
||||
<DList Name="gAdultRutoWaistDL" Offset="0x88F0"/>
|
||||
|
||||
|
||||
<!-- Adult Ruto Limbs -->
|
||||
<Limb Name="gAdultRutoRootLimb" LimbType="Standard" EnumName="RU2_LIMB_ROOT" Offset="0xC5A0"/>
|
||||
<Limb Name="gAdultRutoLeftThighLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_THIGH" Offset="0xC5AC"/>
|
||||
<Limb Name="gAdultRutoLeftLegLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_LEG" Offset="0xC5B8"/>
|
||||
<Limb Name="gAdultRutoLeftFootLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_FOOT" Offset="0xC5C4"/>
|
||||
<Limb Name="gAdultRutoLeftTailLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_TAIL" Offset="0xC5D0"/>
|
||||
<Limb Name="gAdultRutoRightThighLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_THIGH" Offset="0xC5DC"/>
|
||||
<Limb Name="gAdultRutoRightLegLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_LEG" Offset="0xC5E8"/>
|
||||
<Limb Name="gAdultRutoRightFootLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_FOOT" Offset="0xC5F4"/>
|
||||
<Limb Name="gAdultRutoRightTailLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_TAIL" Offset="0xC600"/>
|
||||
<Limb Name="gAdultRutoTorsoLimb" LimbType="Standard" EnumName="RU2_LIMB_TORSO" Offset="0xC60C"/>
|
||||
<Limb Name="gAdultRutoLeftUpperArmLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_UPPER_ARM" Offset="0xC618"/>
|
||||
<Limb Name="gAdultRutoLeftUpperWingLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_UPPER_WING" Offset="0xC624"/>
|
||||
<Limb Name="gAdultRutoLeftLowerWingLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_LOWER_WING" Offset="0xC630"/>
|
||||
<Limb Name="gAdultRutoLeftForearmLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_FORARM" Offset="0xC63C"/>
|
||||
<Limb Name="gAdultRutoLeftHandLimb" LimbType="Standard" EnumName="RU2_LIMB_LEFT_HAND" Offset="0xC648"/>
|
||||
<Limb Name="gAdultRutoRightUpperArmLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_UPPER_ARM" Offset="0xC654"/>
|
||||
<Limb Name="gAdultRutoRightUpperWingLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_UPPER_WING" Offset="0xC660"/>
|
||||
<Limb Name="gAdultRutoRightLowerWingLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_LOWER_WING" Offset="0xC66C"/>
|
||||
<Limb Name="gAdultRutoRightForearmLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_FORARM" Offset="0xC678"/>
|
||||
<Limb Name="gAdultRutoRightHandLimb" LimbType="Standard" EnumName="RU2_LIMB_RIGHT_HAND" Offset="0xC684"/>
|
||||
<Limb Name="gAdultRutoHeadLimb" LimbType="Standard" EnumName="RU2_LIMB_HEAD" Offset="0xC690"/>
|
||||
<Limb Name="gAdultRutoWaistLimb" LimbType="Standard" EnumName="RU2_LIMB_WAIST" Offset="0xC69C"/>
|
||||
<Skeleton Name="gAdultRutoSkel" Type="Flex" LimbType="Standard" LimbNone="RU2_LIMB_NONE" LimbMax="RU2_LIMB_MAX" EnumName="Ru2Limb" Offset="0xC700" />
|
||||
|
||||
<!-- (More) Adult Ruto Animations -->
|
||||
<Animation Name="gAdultRutoRaisingArmsUpAnim" Offset="0xD3DC"/>
|
||||
<!-- HeadTurnDownLeft is intro to gAdultRutoLookingDownLeftAnim, used in OoT Credits scene -->
|
||||
<!-- Looking down at Nabooru with the other sages on Death Mountain after the party -->
|
||||
<Animation Name="gAdultRutoHeadTurnDownLeftAnim" Offset="0xDCAC"/>
|
||||
<Animation Name="gAdultRutoIdleHandsOnHipsAnim" Offset="0xE630"/>
|
||||
<Animation Name="gAdultRutoLookingDownLeftAnim" Offset="0xF03C"/>
|
||||
<Animation Name="gAdultRutoSwimmingUpAnim" Offset="0xF8B8"/>
|
||||
|
||||
</File>
|
||||
</Root>
|
||||
|
|
|
|||
3
spec
3
spec
|
|
@ -2638,8 +2638,7 @@ beginseg
|
|||
name "ovl_En_Ru"
|
||||
compress
|
||||
include "build/src/overlays/actors/ovl_En_Ru/z_en_ru.o"
|
||||
include "build/data/ovl_En_Ru/ovl_En_Ru.data.o"
|
||||
include "build/data/ovl_En_Ru/ovl_En_Ru.reloc.o"
|
||||
include "build/src/overlays/actors/ovl_En_Ru/ovl_En_Ru_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
|
|
|||
|
|
@ -15,9 +15,8 @@ void EnRu_Destroy(Actor* thisx, PlayState* play);
|
|||
void EnRu_Update(Actor* thisx, PlayState* play);
|
||||
void EnRu_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_80A38DF4(EnRu* this, PlayState* play);
|
||||
void EnRu_DoNothing(EnRu* this, PlayState* play);
|
||||
|
||||
#if 0
|
||||
const ActorInit En_Ru_InitVars = {
|
||||
ACTOR_EN_RU,
|
||||
ACTORCAT_NPC,
|
||||
|
|
@ -30,18 +29,29 @@ const ActorInit En_Ru_InitVars = {
|
|||
(ActorFunc)EnRu_Draw,
|
||||
};
|
||||
|
||||
// static ColliderCylinderInit sCylinderInit = {
|
||||
static ColliderCylinderInit D_80A39450 = {
|
||||
{ COLTYPE_HIT0, AT_NONE, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEMTYPE_UNK1, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT0,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_PLAYER,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
OC2_TYPE_1,
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK1,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 18, 64, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
// sColChkInfoInit
|
||||
static CollisionCheckInfoInit2 D_80A3947C = { 0, 0, 0, 0, MASS_IMMOVABLE };
|
||||
static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE };
|
||||
|
||||
// static DamageTable sDamageTable = {
|
||||
static DamageTable D_80A39488 = {
|
||||
static DamageTable sDamageTable = {
|
||||
/* Deku Nut */ DMG_ENTRY(0, 0x0),
|
||||
/* Deku Stick */ DMG_ENTRY(0, 0x0),
|
||||
/* Horse trample */ DMG_ENTRY(0, 0x0),
|
||||
|
|
@ -76,34 +86,268 @@ static DamageTable D_80A39488 = {
|
|||
/* Powder Keg */ DMG_ENTRY(0, 0x0),
|
||||
};
|
||||
|
||||
#endif
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &gAdultRutoIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gAdultRutoIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gAdultRutoRaisingArmsUpAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gAdultRutoCrossingArmsAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gAdultRutoLookingDownLeftAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gAdultRutoIdleHandsOnHipsAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gAdultRutoHeadTurnDownLeftAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gAdultRutoSwimmingUpAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
};
|
||||
|
||||
extern ColliderCylinderInit D_80A39450;
|
||||
extern CollisionCheckInfoInit2 D_80A3947C;
|
||||
extern DamageTable D_80A39488;
|
||||
// in PostLimbdraw, converts limbIndex to bodyPartsPos index
|
||||
static s8 sBodyPartPosIndices[] = {
|
||||
-1, -1, 12, 13, 14, -1, 9, 10, 11, -1, 0, 6, -1, -1, 7, 8, 2, -1, -1, 3, 4, 2, 1,
|
||||
};
|
||||
|
||||
extern UNK_TYPE D_0600C700;
|
||||
static s8 sRuBodyParts[RU_BODYPARTSPOS_COUNT] = {
|
||||
0, 0, 0, 0, 3, 4, 0, 6, 7, 0, 9, 10, 0, 12, 13,
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/func_80A389A0.s")
|
||||
static u8 sRuShadowSizes[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/func_80A38A68.s")
|
||||
static TrackOptionsSet sTrackOptions = {
|
||||
{ 0xFA0, 4, 1, 3 }, { 0x1770, 4, 1, 6 }, { 0xFA0, 4, 1, 3 }, { 0x1770, 4, 1, 6 }
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/func_80A38B7C.s")
|
||||
s32 EnRu_ChangeAnim(SkelAnime* skelAnime, s16 animIndex) {
|
||||
s16 lastFrame;
|
||||
s32 ret = false;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/func_80A38BF0.s")
|
||||
if ((animIndex >= 0) && (animIndex < ARRAY_COUNT(sAnimationInfo))) {
|
||||
lastFrame = sAnimationInfo[animIndex].frameCount;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/func_80A38C70.s")
|
||||
ret = true;
|
||||
if (lastFrame < 0) {
|
||||
lastFrame = Animation_GetLastFrame(sAnimationInfo[animIndex].animation);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/func_80A38DF4.s")
|
||||
Animation_Change(skelAnime, sAnimationInfo[animIndex].animation, sAnimationInfo[animIndex].playSpeed,
|
||||
sAnimationInfo[animIndex].startFrame, lastFrame, sAnimationInfo[animIndex].mode,
|
||||
sAnimationInfo[animIndex].morphFrames);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/EnRu_Init.s")
|
||||
return ret;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/EnRu_Destroy.s")
|
||||
// En_Zo has a copy of this function
|
||||
s32 EnRu_PlayWalkingSound(EnRu* this, PlayState* play) {
|
||||
u8 leftWasGrounded;
|
||||
u8 rightWasGrounded;
|
||||
s32 waterSfxId;
|
||||
s16 sfxId;
|
||||
u8 isFootGrounded;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/EnRu_Update.s")
|
||||
leftWasGrounded = this->isLeftFootGrounded;
|
||||
rightWasGrounded = this->isRightFootGrounded;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/func_80A38FB4.s")
|
||||
if (this->actor.bgCheckFlags & 0x20) {
|
||||
if (this->actor.depthInWater < 20.0f) {
|
||||
waterSfxId = NA_SE_PL_WALK_WATER0 - SFX_FLAG;
|
||||
} else {
|
||||
waterSfxId = NA_SE_PL_WALK_WATER1 - SFX_FLAG;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/func_80A390F8.s")
|
||||
sfxId = waterSfxId + SFX_FLAG;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Ru/EnRu_Draw.s")
|
||||
} else {
|
||||
sfxId = SurfaceType_GetSfx(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId) + SFX_FLAG;
|
||||
}
|
||||
|
||||
this->isLeftFootGrounded = isFootGrounded = SubS_IsFloorAbove(play, &this->leftFootPos, -6.0f);
|
||||
|
||||
if (this->isLeftFootGrounded && !leftWasGrounded && isFootGrounded) {
|
||||
Actor_PlaySfxAtPos(&this->actor, sfxId);
|
||||
}
|
||||
|
||||
this->isRightFootGrounded = isFootGrounded = SubS_IsFloorAbove(play, &this->rightFootPos, -6.0f);
|
||||
if (this->isRightFootGrounded && !rightWasGrounded && isFootGrounded) {
|
||||
Actor_PlaySfxAtPos(&this->actor, sfxId);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
// This function is only ever called with eyeStateMax == 3
|
||||
void EnRu_UpdateEyes(EnRu* this, s32 eyeStateMax) {
|
||||
if (DECR(this->blinkTimer) == 0) {
|
||||
this->eyeState++;
|
||||
if (this->eyeState >= eyeStateMax) {
|
||||
this->eyeState = 0;
|
||||
this->blinkTimer = Rand_S16Offset(30, 30);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EnRu_UpdateCollider(EnRu* this, PlayState* play) {
|
||||
this->collider.dim.pos.x = this->actor.world.pos.x;
|
||||
this->collider.dim.pos.y = this->actor.world.pos.y;
|
||||
this->collider.dim.pos.z = this->actor.world.pos.z;
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base);
|
||||
CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base);
|
||||
}
|
||||
|
||||
void EnRu_UpdateModel(EnRu* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
|
||||
// Head and Torso tracking to Player if in front of Ru.
|
||||
if (SubS_AngleDiffLessEqual(this->actor.shape.rot.y, 0x2710, this->actor.yawTowardsPlayer)) {
|
||||
Vec3f playerPos;
|
||||
|
||||
playerPos.x = player->actor.world.pos.x;
|
||||
playerPos.y = player->bodyPartsPos[7].y + 3.0f;
|
||||
playerPos.z = player->actor.world.pos.z;
|
||||
SubS_TrackPoint(&playerPos, &this->actor.focus.pos, &this->actor.shape.rot, &this->trackTarget, &this->headRot,
|
||||
&this->torsoRot, &sTrackOptions);
|
||||
|
||||
} else { // smooth her back to facing forward
|
||||
Math_SmoothStepToS(&this->trackTarget.x, 0, 4, 0x3E8, 1);
|
||||
Math_SmoothStepToS(&this->trackTarget.y, 0, 4, 0x3E8, 1);
|
||||
Math_SmoothStepToS(&this->headRot.x, 0, 4, 0x3E8, 1);
|
||||
Math_SmoothStepToS(&this->headRot.y, 0, 4, 0x3E8, 1);
|
||||
Math_SmoothStepToS(&this->torsoRot.x, 0, 4, 0x3E8, 1);
|
||||
Math_SmoothStepToS(&this->torsoRot.y, 0, 4, 0x3E8, 1);
|
||||
}
|
||||
|
||||
EnRu_UpdateEyes(this, 3);
|
||||
EnRu_PlayWalkingSound(this, play);
|
||||
SubS_FillLimbRotTables(play, this->limbRotTableY, this->limbRotTableZ, RU2_LIMB_MAX);
|
||||
}
|
||||
|
||||
void EnRu_DoNothing(EnRu* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnRu_Init(Actor* thisx, PlayState* play) {
|
||||
s32 pad;
|
||||
EnRu* this = THIS;
|
||||
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gAdultRutoSkel, NULL, this->jointTable, this->morphTable, RU2_LIMB_MAX);
|
||||
EnRu_ChangeAnim(&this->skelAnime, 0);
|
||||
Collider_InitCylinder(play, &this->collider);
|
||||
Collider_SetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
|
||||
CollisionCheck_SetInfo2(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit);
|
||||
|
||||
this->path = SubS_GetPathByIndex(play, RU_GET_PATH(thisx), 0x3F);
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
this->actionFunc = EnRu_DoNothing;
|
||||
this->actor.gravity = -4.0f;
|
||||
}
|
||||
|
||||
void EnRu_Destroy(Actor* thisx, PlayState* play) {
|
||||
EnRu* this = THIS;
|
||||
|
||||
Collider_DestroyCylinder(play, &this->collider);
|
||||
}
|
||||
|
||||
void EnRu_Update(Actor* thisx, PlayState* play) {
|
||||
EnRu* this = THIS;
|
||||
|
||||
this->actionFunc(this, play);
|
||||
Actor_UpdateBgCheckInfo(play, &this->actor, 0.0f, 0.0f, 0.0f, 4);
|
||||
EnRu_UpdateModel(this, play);
|
||||
EnRu_UpdateCollider(this, play);
|
||||
}
|
||||
|
||||
s32 EnRu_OverrideLimbdraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
|
||||
Gfx** gfx) {
|
||||
EnRu* this = THIS;
|
||||
|
||||
if (limbIndex == RU2_LIMB_HEAD) {
|
||||
Matrix_Translate(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY);
|
||||
Matrix_RotateXS(this->headRot.y, MTXMODE_APPLY);
|
||||
Matrix_RotateZS(this->headRot.x, MTXMODE_APPLY);
|
||||
Matrix_Translate(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY);
|
||||
}
|
||||
|
||||
if (limbIndex == RU2_LIMB_TORSO) {
|
||||
Matrix_RotateYS(this->torsoRot.y, MTXMODE_APPLY);
|
||||
Matrix_RotateXS(this->torsoRot.x, MTXMODE_APPLY);
|
||||
}
|
||||
|
||||
if ((limbIndex == RU2_LIMB_TORSO) || (limbIndex == RU2_LIMB_LEFT_UPPER_ARM) ||
|
||||
(limbIndex == RU2_LIMB_RIGHT_UPPER_ARM)) {
|
||||
rot->y += (s16)(Math_SinS(this->limbRotTableY[limbIndex]) * 200.0f);
|
||||
rot->z += (s16)(Math_CosS(this->limbRotTableZ[limbIndex]) * 200.0f);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void EnRu_PostLimbdraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
EnRu* this = THIS;
|
||||
Vec3f headFocus = { 800.0f, 0, 0 };
|
||||
Vec3f bodyPartPos = { 0, 0, 0 };
|
||||
|
||||
if (sBodyPartPosIndices[limbIndex] >= 0) {
|
||||
Matrix_MultVec3f(&bodyPartPos, &this->bodyPartsPos[sBodyPartPosIndices[limbIndex]]);
|
||||
}
|
||||
if (limbIndex == RU2_LIMB_HEAD) {
|
||||
Matrix_MultVec3f(&headFocus, &thisx->focus.pos);
|
||||
}
|
||||
|
||||
if (limbIndex == RU2_LIMB_LEFT_FOOT) {
|
||||
Matrix_MultVec3f(&bodyPartPos, &this->leftFootPos);
|
||||
}
|
||||
if (limbIndex == RU2_LIMB_RIGHT_FOOT) {
|
||||
Matrix_MultVec3f(&bodyPartPos, &this->rightFootPos);
|
||||
}
|
||||
}
|
||||
|
||||
// This is a copy of displaylist found in En_Zo
|
||||
static Gfx sTransparencyDlist[] = {
|
||||
gsDPSetRenderMode(AA_EN | Z_CMP | Z_UPD | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_XLU | FORCE_BL |
|
||||
G_RM_FOG_SHADE_A,
|
||||
AA_EN | Z_CMP | Z_UPD | IM_RD | CLR_ON_CVG | CVG_DST_WRAP | ZMODE_XLU | FORCE_BL |
|
||||
GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)),
|
||||
gsDPSetAlphaCompare(G_AC_THRESHOLD),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
void EnRu_Draw(Actor* thisx, PlayState* play) {
|
||||
EnRu* this = THIS;
|
||||
u8* shadowTex = GRAPH_ALLOC(play->state.gfxCtx, SUBS_SHADOW_TEX_SIZE);
|
||||
u8* shadowTexIter;
|
||||
s32 i;
|
||||
TexturePtr eyeTextures[] = { gAdultRutoEyeOpenTex, gAdultRutoEyeHalfTex, gAdultRutoEyeClosedTex };
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
func_8012C28C(play->state.gfxCtx);
|
||||
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
|
||||
gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255);
|
||||
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(eyeTextures[this->eyeState]));
|
||||
|
||||
// only runs the last command of the display list, which is gsSPEndDisplayList
|
||||
gSPSegment(POLY_OPA_DISP++, 0x0C, &sTransparencyDlist[2]);
|
||||
|
||||
POLY_OPA_DISP =
|
||||
SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
EnRu_OverrideLimbdraw, EnRu_PostLimbdraw, &this->actor, POLY_OPA_DISP);
|
||||
|
||||
Matrix_RotateXS(0, MTXMODE_NEW);
|
||||
|
||||
for (i = 0, shadowTexIter = shadowTex; i < SUBS_SHADOW_TEX_SIZE; i++) {
|
||||
*shadowTexIter++ = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < 5; i++) {
|
||||
SubS_GenShadowTex(&this->bodyPartsPos[0], &this->actor.world.pos, shadowTex, (i / 5.0f),
|
||||
(ARRAY_COUNT(sRuBodyParts)), sRuShadowSizes, sRuBodyParts);
|
||||
}
|
||||
|
||||
SubS_DrawShadowTex(&this->actor, &play->state, shadowTex);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,15 +2,40 @@
|
|||
#define Z_EN_RU_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_ru2/object_ru2.h"
|
||||
|
||||
#define RU_GET_PATH(thisx) ((thisx->params & 0x7E00) >> 9)
|
||||
|
||||
struct EnRu;
|
||||
|
||||
typedef void (*EnRuActionFunc)(struct EnRu*, PlayState*);
|
||||
|
||||
#define RU_BODYPARTSPOS_COUNT 15
|
||||
|
||||
typedef struct EnRu {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ EnRuActionFunc actionFunc;
|
||||
/* 0x148 */ char unk_148[0x30C];
|
||||
/* 0x148 */ SkelAnime skelAnime;
|
||||
/* 0x18C */ ColliderCylinder collider;
|
||||
/* 0x1D8 */ UNK_TYPE1 pad1D8[0x4];
|
||||
/* 0x1DC */ Path* path; // path is prepared in EnRu_Init, but unused after
|
||||
/* 0x1E0 */ UNK_TYPE1 pad1E0[0x4];
|
||||
/* 0x1E4 */ Vec3f leftFootPos;
|
||||
/* 0x1F0 */ Vec3f rightFootPos;
|
||||
/* 0x1FC */ u8 isLeftFootGrounded;
|
||||
/* 0x1FD */ u8 isRightFootGrounded;
|
||||
/* 0x1FE */ Vec3s jointTable[RU2_LIMB_MAX];
|
||||
/* 0x288 */ Vec3s morphTable[RU2_LIMB_MAX];
|
||||
/* 0x312 */ Vec3s trackTarget;
|
||||
/* 0x318 */ Vec3s headRot;
|
||||
/* 0x31E */ Vec3s torsoRot;
|
||||
/* 0x324 */ UNK_TYPE1 pad324[0x12];
|
||||
/* 0x336 */ s16 limbRotTableY[RU2_LIMB_MAX];
|
||||
/* 0x364 */ s16 limbRotTableZ[RU2_LIMB_MAX];
|
||||
/* 0x394 */ Vec3f bodyPartsPos[RU_BODYPARTSPOS_COUNT];
|
||||
/* 0x348 */ UNK_TYPE1 padUNK[6];
|
||||
/* 0x44E */ s16 eyeState;
|
||||
/* 0x450 */ s16 blinkTimer;
|
||||
} EnRu; // size = 0x454
|
||||
|
||||
extern const ActorInit En_Ru_InitVars;
|
||||
|
|
|
|||
|
|
@ -10254,17 +10254,17 @@
|
|||
0x80A3862C:("DmZl_OverrideLimbDraw",),
|
||||
0x80A38648:("DmZl_PostLimbDraw",),
|
||||
0x80A3869C:("DmZl_Draw",),
|
||||
0x80A389A0:("func_80A389A0",),
|
||||
0x80A38A68:("func_80A38A68",),
|
||||
0x80A38B7C:("func_80A38B7C",),
|
||||
0x80A38BF0:("func_80A38BF0",),
|
||||
0x80A38C70:("func_80A38C70",),
|
||||
0x80A38DF4:("func_80A38DF4",),
|
||||
0x80A389A0:("EnRu_ChangeAnim",),
|
||||
0x80A38A68:("EnRu_PlayWalkingSound",),
|
||||
0x80A38B7C:("EnRu_UpdateEyes",),
|
||||
0x80A38BF0:("EnRu_UpdateCollider",),
|
||||
0x80A38C70:("EnRu_UpdateModel",),
|
||||
0x80A38DF4:("EnRu_DoNothing",),
|
||||
0x80A38E04:("EnRu_Init",),
|
||||
0x80A38F10:("EnRu_Destroy",),
|
||||
0x80A38F3C:("EnRu_Update",),
|
||||
0x80A38FB4:("func_80A38FB4",),
|
||||
0x80A390F8:("func_80A390F8",),
|
||||
0x80A38FB4:("EnRu_OverrideLimbdraw",),
|
||||
0x80A390F8:("EnRu_PostLimbdraw",),
|
||||
0x80A39204:("EnRu_Draw",),
|
||||
0x80A396B0:("func_80A396B0",),
|
||||
0x80A3970C:("EnElfgrp_Init",),
|
||||
|
|
|
|||
Loading…
Reference in New Issue