mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
ovl_Bg_Dy_Yoseizo and related docs (#1390)
* Add ido setting to permuter * OK * Data imported & named, change spec * Some easy naming * Cleanup * More object stuff and enums * Document EnDyExtra * Document DemoGetitem * Document DemoEffect * Some work on Elforg * Elforg params macro, some more on Elfgrp * Defines for number of fairies * Tweak some flags wording * Label beam * Elfgrp: Name most of the stray fairy handling stuff * cleanup * fix typo * GreatFairyAnimation * name animations * BgDyYoseizo_TrainPlayer * Choose behaviour? * fix merge * format * self review * WEEKEVENTREG_OBTAINED_GREAT_SPIN_ATTACK * jenkins * review * Update src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * review * Update src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c * review --------- Co-authored-by: Elliptic Ellipsis <elliptic.ellipsis@gmail.com> Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
This commit is contained in:
co-authored by
Elliptic Ellipsis
Derek Hensley
engineer124
parent
f6a2f4492a
commit
f08a69a2cb
@@ -1,51 +1,62 @@
|
||||
<Root>
|
||||
<!-- Great Fairy assets -->
|
||||
<File Name="object_dy_obj" Segment="6">
|
||||
<Animation Name="object_dy_obj_Anim_00129C" Offset="0x129C" /> <!-- Original name is "be_mahoukousi" -->
|
||||
<Animation Name="object_dy_obj_Anim_002338" Offset="0x2338" /> <!-- Original name is "be_mahoukousi_loop" -->
|
||||
<Animation Name="object_dy_obj_Anim_0027B0" Offset="0x27B0" /> <!-- Original name is "be_syutugen" -->
|
||||
<Animation Name="object_dy_obj_Anim_0045FC" Offset="0x45FC" /> <!-- Original name is "be_utubuse" -->
|
||||
<Animation Name="object_dy_obj_Anim_005238" Offset="0x5238" /> <!-- Original name is "be_utubuse_loop" -->
|
||||
<Animation Name="object_dy_obj_Anim_005E20" Offset="0x5E20" /> <!-- Original name is "bigelf_denjyu" -->
|
||||
<Animation Name="object_dy_obj_Anim_006DE4" Offset="0x6DE4" /> <!-- Original name is "bigelf_hakusyu" -->
|
||||
<Animation Name="object_dy_obj_Anim_008090" Offset="0x8090" /> <!-- Original name is "bigelf_itemdasu" -->
|
||||
<Animation Name="object_dy_obj_Anim_00C500" Offset="0xC500" /> <!-- Original name is "bigelf_syutugen" -->
|
||||
<Animation Name="object_dy_obj_Anim_00D15C" Offset="0xD15C" /> <!-- Original name is "bigelf_udegumi" -->
|
||||
<DList Name="object_dy_obj_DL_00D1B0" Offset="0xD1B0" />
|
||||
<DList Name="object_dy_obj_DL_00D228" Offset="0xD228" />
|
||||
<Texture Name="object_dy_obj_Tex_00D240" OutName="tex_00D240" Format="i4" Width="32" Height="32" Offset="0xD240" />
|
||||
<Texture Name="object_dy_obj_Tex_00D440" OutName="tex_00D440" Format="i8" Width="16" Height="16" Offset="0xD440" />
|
||||
<Texture Name="object_dy_obj_Tex_00D540" OutName="tex_00D540" Format="i8" Width="32" Height="64" Offset="0xD540" />
|
||||
<Array Name="object_dy_obj_Vtx_00DD40" Count="27" Offset="0xDD40">
|
||||
<!-- Great Fairy animations -->
|
||||
<Animation Name="gGreatFairyStartGivingUpgradeAnim" Offset="0x129C" /> <!-- Original name is "be_mahoukousi" -->
|
||||
<Animation Name="gGreatFairyGivingUpgradeAnim" Offset="0x2338" /> <!-- Original name is "be_mahoukousi_loop" -->
|
||||
<Animation Name="gGreatFairyAnim_0027B0" Offset="0x27B0" /> <!-- Original name is "be_syutugen" --> <!-- unused -->
|
||||
<Animation Name="gGreatFairyLayDownTransitionAnim" Offset="0x45FC" /> <!-- Original name is "be_utubuse" -->
|
||||
<Animation Name="gGreatFairyLayingDownAnim" Offset="0x5238" /> <!-- Original name is "be_utubuse_loop" -->
|
||||
<Animation Name="gGreatFairyTeachSpinAttackAnim" Offset="0x5E20" /> <!-- Original name is "bigelf_denjyu" ("instruction") -->
|
||||
<Animation Name="gGreatFairyClappingAnim" Offset="0x6DE4" /> <!-- Original name is "bigelf_hakusyu" ("applause") -->
|
||||
<Animation Name="gGreatFairyShowingItemAnim" Offset="0x8090" /> <!-- Original name is "bigelf_itemdasu" -->
|
||||
<Animation Name="gGreatFairySpinLayDownAnim" Offset="0xC500" /> <!-- Original name is "bigelf_syutugen" -->
|
||||
<Animation Name="gGreatFairyArmsFoldedAnim" Offset="0xD15C" /> <!-- Original name is "bigelf_udegumi" ("arms crossed") -->
|
||||
|
||||
<!-- Great Fairy particles -->
|
||||
<DList Name="gGreatFairyParticleSetupDL" Offset="0xD1B0" />
|
||||
<DList Name="gGreatFairyParticleDL" Offset="0xD228" />
|
||||
<Texture Name="gGreatFairyParticleTex" OutName="great_fairy_particle" Format="i4" Width="32" Height="32" Offset="0xD240" />
|
||||
|
||||
<!-- Great Fairy spiral beam -->
|
||||
<Texture Name="gGreatFairySpiralBeamPatternTex" OutName="spiral_beam_pattern" Format="i8" Width="16" Height="16" Offset="0xD440" />
|
||||
<Texture Name="gGreatFairySpiralBeamGradientTex" OutName="spiral_beam_gradient" Format="i8" Width="32" Height="64" Offset="0xD540" />
|
||||
<Array Name="gGreatFairySpiralBeamVtx" Count="27" Offset="0xDD40">
|
||||
<Vtx/>
|
||||
</Array>
|
||||
<DList Name="object_dy_obj_DL_00DEF0" Offset="0xDEF0" /> <!-- Original name is "efc_g_fairly_modelT" -->
|
||||
<DList Name="object_dy_obj_DL_013810" Offset="0x13810" />
|
||||
<DList Name="object_dy_obj_DL_013928" Offset="0x13928" />
|
||||
<DList Name="object_dy_obj_DL_013CF8" Offset="0x13CF8" />
|
||||
<DList Name="object_dy_obj_DL_0142E0" Offset="0x142E0" />
|
||||
<DList Name="object_dy_obj_DL_0143F0" Offset="0x143F0" />
|
||||
<DList Name="object_dy_obj_DL_014578" Offset="0x14578" />
|
||||
<DList Name="object_dy_obj_DL_014670" Offset="0x14670" />
|
||||
<DList Name="object_dy_obj_DL_014760" Offset="0x14760" />
|
||||
<DList Name="object_dy_obj_DL_014908" Offset="0x14908" />
|
||||
<DList Name="object_dy_obj_DL_014A00" Offset="0x14A00" />
|
||||
<DList Name="object_dy_obj_DL_014B88" Offset="0x14B88" />
|
||||
<DList Name="object_dy_obj_DL_014C78" Offset="0x14C78" />
|
||||
<DList Name="object_dy_obj_DL_014E08" Offset="0x14E08" />
|
||||
<DList Name="object_dy_obj_DL_014F08" Offset="0x14F08" />
|
||||
<DList Name="object_dy_obj_DL_015008" Offset="0x15008" />
|
||||
<DList Name="object_dy_obj_DL_0150F8" Offset="0x150F8" />
|
||||
<DList Name="object_dy_obj_DL_015220" Offset="0x15220" />
|
||||
<DList Name="object_dy_obj_DL_0153B8" Offset="0x153B8" />
|
||||
<DList Name="object_dy_obj_DL_015598" Offset="0x15598" />
|
||||
<DList Name="object_dy_obj_DL_0156C0" Offset="0x156C0" />
|
||||
<DList Name="object_dy_obj_DL_0158E8" Offset="0x158E8" />
|
||||
<DList Name="object_dy_obj_DL_015AC8" Offset="0x15AC8" />
|
||||
<DList Name="object_dy_obj_DL_015E88" Offset="0x15E88" />
|
||||
<DList Name="object_dy_obj_DL_015FE8" Offset="0x15FE8" />
|
||||
<DList Name="object_dy_obj_DL_0160F8" Offset="0x160F8" />
|
||||
<DList Name="object_dy_obj_DL_016360" Offset="0x16360" />
|
||||
<DList Name="object_dy_obj_DL_0164B8" Offset="0x164B8" />
|
||||
<DList Name="gGreatFairySpiralBeamDL" Offset="0xDEF0" /> <!-- Original name is "efc_g_fairly_modelT" -->
|
||||
|
||||
<!-- Great Fairy model -->
|
||||
<!-- Displaylists -->
|
||||
<DList Name="gGreatFairyWaistDL" Offset="0x13810" />
|
||||
<DList Name="gGreatFairyTorsoDL" Offset="0x13928" />
|
||||
<DList Name="gGreatFairyHeadDL" Offset="0x13CF8" />
|
||||
<DList Name="gGreatFairyRightHairLowerPartDL" Offset="0x142E0" />
|
||||
<DList Name="gGreatFairyRightHairMiddlePartDL" Offset="0x143F0" />
|
||||
<DList Name="gGreatFairyRightHairUpperPartDL" Offset="0x14578" />
|
||||
<DList Name="gGreatFairyRightHairTipDL" Offset="0x14670" />
|
||||
<DList Name="gGreatFairyLeftHairLowerPartDL" Offset="0x14760" />
|
||||
<DList Name="gGreatFairyLeftHairMiddlePartDL" Offset="0x14908" />
|
||||
<DList Name="gGreatFairyLeftHairUpperPartDL" Offset="0x14A00" />
|
||||
<DList Name="gGreatFairyLeftHairTipDL" Offset="0x14B88" />
|
||||
<DList Name="gGreatFairyMiddleHairLowerPartDL" Offset="0x14C78" />
|
||||
<DList Name="gGreatFairyMiddleHairMiddlePartDL" Offset="0x14E08" />
|
||||
<DList Name="gGreatFairyMiddleHairUpperPartDL" Offset="0x14F08" />
|
||||
<DList Name="gGreatFairyMiddleHairTipDL" Offset="0x15008" />
|
||||
<DList Name="gGreatFairyRightUpperArmDL" Offset="0x150F8" />
|
||||
<DList Name="gGreatFairyRightForearmDL" Offset="0x15220" />
|
||||
<DList Name="gGreatFairyRightHandDL" Offset="0x153B8" />
|
||||
<DList Name="gGreatFairyLeftUpperArmDL" Offset="0x15598" />
|
||||
<DList Name="gGreatFairyLeftForearmDL" Offset="0x156C0" />
|
||||
<DList Name="gGreatFairyLeftHandDL" Offset="0x158E8" />
|
||||
<DList Name="gGreatFairyRightThighDL" Offset="0x15AC8" />
|
||||
<DList Name="gGreatFairyRightLowerLegDL" Offset="0x15E88" />
|
||||
<DList Name="gGreatFairyRightFoot" Offset="0x15FE8" />
|
||||
<DList Name="gGreatFairyLeftThighDL" Offset="0x160F8" />
|
||||
<DList Name="gGreatFairyLeftLowerLegDL" Offset="0x16360" />
|
||||
<DList Name="gGreatFairyLeftFootDL" Offset="0x164B8" />
|
||||
|
||||
<!-- Textures -->
|
||||
<Texture Name="object_dy_obj_TLUT_0165C8" OutName="tlut_0165C8" Format="rgba16" Width="16" Height="16" Offset="0x165C8" />
|
||||
<Texture Name="object_dy_obj_Tex_0167C8" OutName="tex_0167C8" Format="ci8" Width="8" Height="8" Offset="0x167C8" />
|
||||
<Texture Name="object_dy_obj_Tex_016808" OutName="tex_016808" Format="ci8" Width="8" Height="8" Offset="0x16808" />
|
||||
@@ -55,42 +66,46 @@
|
||||
<Texture Name="object_dy_obj_Tex_017488" OutName="tex_017488" Format="ci8" Width="32" Height="32" Offset="0x17488" />
|
||||
<Texture Name="object_dy_obj_Tex_017888" OutName="tex_017888" Format="ci8" Width="16" Height="16" Offset="0x17888" />
|
||||
<Texture Name="object_dy_obj_Tex_017988" OutName="tex_017988" Format="rgba16" Width="32" Height="16" Offset="0x17988" />
|
||||
|
||||
<Texture Name="object_dy_obj_Tex_017D88" OutName="tex_017D88" Format="rgba16" Width="32" Height="32" Offset="0x17D88" />
|
||||
<Texture Name="object_dy_obj_Tex_018588" OutName="tex_018588" Format="rgba16" Width="32" Height="32" Offset="0x18588" />
|
||||
<Texture Name="object_dy_obj_Tex_018D88" OutName="tex_018D88" Format="rgba16" Width="32" Height="32" Offset="0x18D88" />
|
||||
<Texture Name="object_dy_obj_Tex_019588" OutName="tex_019588" Format="rgba16" Width="32" Height="32" Offset="0x19588" />
|
||||
<Texture Name="object_dy_obj_Tex_019D88" OutName="tex_019D88" Format="rgba16" Width="32" Height="32" Offset="0x19D88" />
|
||||
<Texture Name="object_dy_obj_Tex_01A588" OutName="tex_01A588" Format="rgba16" Width="64" Height="32" Offset="0x1A588" />
|
||||
<Texture Name="object_dy_obj_Tex_01B588" OutName="tex_01B588" Format="rgba16" Width="64" Height="32" Offset="0x1B588" />
|
||||
<Texture Name="gGreatFairyMouthClosedTex" OutName="great_fairy_mouth_closed" Format="rgba16" Width="64" Height="32" Offset="0x1A588" />
|
||||
<Texture Name="gGreatFairyMouthOpenTex" OutName="great_fairy_mouth_open" Format="rgba16" Width="64" Height="32" Offset="0x1B588" />
|
||||
<Texture Name="object_dy_obj_Tex_01C588" OutName="tex_01C588" Format="i8" Width="16" Height="16" Offset="0x1C588" />
|
||||
<TextureAnimation Name="object_dy_obj_Matanimheader_01C6F4" Offset="0x1C6F4" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C704" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_01" Offset="0x1C704" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C710" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_02" Offset="0x1C710" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C71C" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_03" Offset="0x1C71C" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C728" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_04" Offset="0x1C728" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C734" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_05" Offset="0x1C734" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C740" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_06" Offset="0x1C740" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C74C" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_07" Offset="0x1C74C" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C758" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_08" Offset="0x1C758" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C764" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_09" Offset="0x1C764" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C770" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_0A" Offset="0x1C770" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C77C" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_0B" Offset="0x1C77C" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C788" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_0C" Offset="0x1C788" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C794" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_0D" Offset="0x1C794" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C7A0" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_0E" Offset="0x1C7A0" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C7AC" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_0F" Offset="0x1C7AC" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C7B8" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_10" Offset="0x1C7B8" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C7C4" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_11" Offset="0x1C7C4" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C7D0" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_12" Offset="0x1C7D0" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C7DC" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_13" Offset="0x1C7DC" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C7E8" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_14" Offset="0x1C7E8" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C7F4" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_15" Offset="0x1C7F4" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C800" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_16" Offset="0x1C800" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C80C" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_17" Offset="0x1C80C" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C818" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_18" Offset="0x1C818" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C824" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_19" Offset="0x1C824" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C830" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_1A" Offset="0x1C830" />
|
||||
<Limb Name="object_dy_obj_Standardlimb_01C83C" Type="Standard" EnumName="OBJECT_DY_OBJ_LIMB_1B" Offset="0x1C83C" />
|
||||
<Skeleton Name="object_dy_obj_Skel_01C8B4" Type="Flex" LimbType="Standard" LimbNone="OBJECT_DY_OBJ_LIMB_NONE" LimbMax="OBJECT_DY_OBJ_LIMB_MAX" EnumName="ObjectDyObjLimb" Offset="0x1C8B4" />
|
||||
|
||||
<TextureAnimation Name="gGreatFairyAppearenceTexAnim" Offset="0x1C6F4" />
|
||||
|
||||
<!-- Great Fairy Skeleton -->
|
||||
<Limb Name="gGreatFairyWaistLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_WAIST" Offset="0x1C704" />
|
||||
<Limb Name="gGreatFairyLeftThighLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_LEFT_THIGH" Offset="0x1C710" />
|
||||
<Limb Name="gGreatFairyLeftLowerLegLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_LEFT_LOWER_LEG" Offset="0x1C71C" />
|
||||
<Limb Name="gGreatFairyLeftFootLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_LEFT_FOOT" Offset="0x1C728" />
|
||||
<Limb Name="gGreatFairyRightThighLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_RIGHT_THIGH" Offset="0x1C734" />
|
||||
<Limb Name="gGreatFairyRightLowerLegLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_RIGHT_LOWER_LEG" Offset="0x1C740" />
|
||||
<Limb Name="gGreatFairyRightFootLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_RIGHT_FOOT" Offset="0x1C74C" />
|
||||
<Limb Name="gGreatFairyTorsoLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_TORSO" Offset="0x1C758" />
|
||||
<Limb Name="gGreatFairyLeftUpperArmLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_LEFT_UPPER_ARM" Offset="0x1C764" />
|
||||
<Limb Name="gGreatFairyLeftForearmLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_LEFT_FOREARM" Offset="0x1C770" />
|
||||
<Limb Name="gGreatFairyLeftHandLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_LEFT_HAND" Offset="0x1C77C" />
|
||||
<Limb Name="gGreatFairyRightUpperArmLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_RIGHT_UPPER_ARM" Offset="0x1C788" />
|
||||
<Limb Name="gGreatFairyRightForearmLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_RIGHT_FOREARM" Offset="0x1C794" />
|
||||
<Limb Name="gGreatFairyRightHandLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_RIGHT_HAND" Offset="0x1C7A0" />
|
||||
<Limb Name="gGreatFairyHeadLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_HEAD" Offset="0x1C7AC" />
|
||||
<Limb Name="gGreatFairyMiddleHairLowerPartLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_MIDDLE_HAIR_LOWER_PART" Offset="0x1C7B8" />
|
||||
<Limb Name="gGreatFairyMiddleHairMiddlePartLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_MIDDLE_HAIR_MIDDLE_PART" Offset="0x1C7C4" />
|
||||
<Limb Name="gGreatFairyMiddleHairUpperPartLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_MIDDLE_HAIR_UPPER_PART" Offset="0x1C7D0" />
|
||||
<Limb Name="gGreatFairyMiddleHairTipLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_MIDDLE_HAIR_TIP" Offset="0x1C7DC" />
|
||||
<Limb Name="gGreatFairyLeftHairLowerPartLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_LEFT_HAIR_LOWER_PART" Offset="0x1C7E8" />
|
||||
<Limb Name="gGreatFairyLeftHairMiddlePartLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_LEFT_HAIR_MIDDLE_PART" Offset="0x1C7F4" />
|
||||
<Limb Name="gGreatFairyLeftHairUpperPartLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_LEFT_HAIR_UPPER_PART" Offset="0x1C800" />
|
||||
<Limb Name="gGreatFairyLeftHairTipLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_LEFT_HAIR_TIP" Offset="0x1C80C" />
|
||||
<Limb Name="gGreatFairyRightHairLowerPartLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_RIGHT_HAIR_LOWER_PART" Offset="0x1C818" />
|
||||
<Limb Name="gGreatFairyRightHairMiddlePartLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_RIGHT_HAIR_MIDDLE_PART" Offset="0x1C824" />
|
||||
<Limb Name="gGreatFairyRightHairUpperPartLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_RIGHT_HAIR_UPPER_PART" Offset="0x1C830" />
|
||||
<Limb Name="gGreatFairyRightHairTipLimb" Type="Standard" EnumName="GREAT_FAIRY_LIMB_RIGHT_HAIR_TIP" Offset="0x1C83C" />
|
||||
<Skeleton Name="gGreatFairySkel" Type="Flex" LimbType="Standard" LimbNone="GREAT_FAIRY_LIMB_NONE" LimbMax="GREAT_FAIRY_LIMB_MAX" EnumName="GreatFairyLimb" Offset="0x1C8B4" />
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
<Root>
|
||||
<File Name="object_efc_tw" Segment="6">
|
||||
<CurveAnimation Name="object_efc_tw_CurveAnim_000050" SkelOffset="0x12E8" Offset="0x50" />
|
||||
<Array Name="object_efc_tw_Vtx_000060" Count="21" Offset="0x60" >
|
||||
<CurveAnimation Name="gTimewarpAnim" SkelOffset="0x12E8" Offset="0x50" />
|
||||
|
||||
<Array Name="gTimewarpVtx" Count="21" Offset="0x60" >
|
||||
<Vtx/>
|
||||
</Array>
|
||||
<DList Name="object_efc_tw_DL_0001B0" Offset="0x1B0" /> <!-- Original name is "top_fc_mdl" -->
|
||||
<Texture Name="object_efc_tw_Tex_0002C8" OutName="tex_0002C8" Format="i8" Width="64" Height="64" Offset="0x2C8" />
|
||||
<Limb Name="object_efc_tw_Curvelimb_0012C8" Type="Curve" EnumName="OBJECT_EFC_TW_LIMB_01" Offset="0x12C8" />
|
||||
<Limb Name="object_efc_tw_Curvelimb_0012D4" Type="Curve" EnumName="OBJECT_EFC_TW_LIMB_02" Offset="0x12D4" />
|
||||
<Skeleton Name="object_efc_tw_Skel_0012E8" Type="Curve" LimbType="Curve" LimbNone="OBJECT_EFC_TW_LIMB_NONE" LimbMax="OBJECT_EFC_TW_LIMB_MAX" EnumName="ObjectEfcTwLimb" Offset="0x12E8" />
|
||||
|
||||
<DList Name="gTimewarpDL" Offset="0x1B0" /> <!-- Original name is "top_fc_mdl" -->
|
||||
<Texture Name="gTimewarpTex" OutName="timewarp" Format="i8" Width="64" Height="64" Offset="0x2C8" />
|
||||
|
||||
<Limb Name="gTimewarp1Limb" Type="Curve" EnumName="TIMEWARP_LIMB_1" Offset="0x12C8" />
|
||||
<Limb Name="gTimewarp2Limb" Type="Curve" EnumName="TIMEWARP_LIMB_2" Offset="0x12D4" />
|
||||
<Skeleton Name="gTimewarpSkel" Type="Curve" LimbType="Curve" LimbNone="TIMEWARP_LIMB_NONE" LimbMax="TIMEWARP_LIMB_MAX" EnumName="TimewarpLimb" Offset="0x12E8" />
|
||||
</File>
|
||||
</Root>
|
||||
|
||||
+7
-1
@@ -650,11 +650,14 @@ typedef enum {
|
||||
#define WEEKEVENTREG_CLOCK_TOWER_OPENED PACK_WEEKEVENTREG_FLAG(8, 0x40)
|
||||
|
||||
#define WEEKEVENTREG_08_80 PACK_WEEKEVENTREG_FLAG(8, 0x80)
|
||||
|
||||
// This 5 flags are managed in a special way by EnElfgrp
|
||||
#define WEEKEVENTREG_09_01 PACK_WEEKEVENTREG_FLAG(9, 0x01)
|
||||
#define WEEKEVENTREG_09_02 PACK_WEEKEVENTREG_FLAG(9, 0x02)
|
||||
#define WEEKEVENTREG_09_04 PACK_WEEKEVENTREG_FLAG(9, 0x04)
|
||||
#define WEEKEVENTREG_09_08 PACK_WEEKEVENTREG_FLAG(9, 0x08)
|
||||
#define WEEKEVENTREG_09_10 PACK_WEEKEVENTREG_FLAG(9, 0x10)
|
||||
|
||||
#define WEEKEVENTREG_09_20 PACK_WEEKEVENTREG_FLAG(9, 0x20)
|
||||
#define WEEKEVENTREG_09_40 PACK_WEEKEVENTREG_FLAG(9, 0x40)
|
||||
#define WEEKEVENTREG_09_80 PACK_WEEKEVENTREG_FLAG(9, 0x80)
|
||||
@@ -795,7 +798,7 @@ typedef enum {
|
||||
#define WEEKEVENTREG_22_40 PACK_WEEKEVENTREG_FLAG(22, 0x40)
|
||||
#define WEEKEVENTREG_22_80 PACK_WEEKEVENTREG_FLAG(22, 0x80)
|
||||
#define WEEKEVENTREG_23_01 PACK_WEEKEVENTREG_FLAG(23, 0x01)
|
||||
#define WEEKEVENTREG_23_02 PACK_WEEKEVENTREG_FLAG(23, 0x02)
|
||||
#define WEEKEVENTREG_OBTAINED_GREAT_SPIN_ATTACK PACK_WEEKEVENTREG_FLAG(23, 0x02)
|
||||
#define WEEKEVENTREG_23_04 PACK_WEEKEVENTREG_FLAG(23, 0x04)
|
||||
#define WEEKEVENTREG_23_08 PACK_WEEKEVENTREG_FLAG(23, 0x08)
|
||||
#define WEEKEVENTREG_23_10 PACK_WEEKEVENTREG_FLAG(23, 0x10)
|
||||
@@ -1631,6 +1634,9 @@ typedef enum {
|
||||
/* 3 */ DUNGEON_INDEX_STONE_TOWER_TEMPLE // Also applies to Inverted Stone Tower Temple
|
||||
} DungeonIndex;
|
||||
|
||||
#define STRAY_FAIRY_TOTAL 25 // total number of stray fairies, including those already in the Great Fairy Fountain
|
||||
#define STRAY_FAIRY_SCATTERED_TOTAL 15 // original number of stray fairies in one dungeon area
|
||||
|
||||
void Sram_ActivateOwl(u8 owlId);
|
||||
void Sram_ClearFlagsAtDawnOfTheFirstDay(void);
|
||||
void Sram_SaveEndOfCycle(struct PlayState* play);
|
||||
|
||||
@@ -2365,8 +2365,7 @@ beginseg
|
||||
name "ovl_Bg_Dy_Yoseizo"
|
||||
compress
|
||||
include "build/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.o"
|
||||
include "build/data/ovl_Bg_Dy_Yoseizo/ovl_Bg_Dy_Yoseizo.data.o"
|
||||
include "build/data/ovl_Bg_Dy_Yoseizo/ovl_Bg_Dy_Yoseizo.reloc.o"
|
||||
include "build/src/overlays/actors/ovl_Bg_Dy_Yoseizo/ovl_Bg_Dy_Yoseizo_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
||||
+15
-15
@@ -725,7 +725,7 @@ void Target_Update(TargetContext* targetCtx, Player* player, Actor* lockOnActor,
|
||||
/* Start of Flags section */
|
||||
|
||||
/**
|
||||
* Tests if current scene switch flag is set.
|
||||
* Tests if a current scene switch flag is set.
|
||||
*/
|
||||
s32 Flags_GetSwitch(PlayState* play, s32 flag) {
|
||||
if ((flag >= 0) && (flag < 0x80)) {
|
||||
@@ -735,7 +735,7 @@ s32 Flags_GetSwitch(PlayState* play, s32 flag) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets current scene switch flag.
|
||||
* Sets a current scene switch flag.
|
||||
*/
|
||||
void Flags_SetSwitch(PlayState* play, s32 flag) {
|
||||
if ((flag >= 0) && (flag < 0x80)) {
|
||||
@@ -744,7 +744,7 @@ void Flags_SetSwitch(PlayState* play, s32 flag) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Unsets current scene switch flag.
|
||||
* Unsets a current scene switch flag.
|
||||
*/
|
||||
void Flags_UnsetSwitch(PlayState* play, s32 flag) {
|
||||
if ((flag >= 0) && (flag < 0x80)) {
|
||||
@@ -753,77 +753,77 @@ void Flags_UnsetSwitch(PlayState* play, s32 flag) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests if current scene chest flag is set.
|
||||
* Tests if a current scene chest flag is set.
|
||||
*/
|
||||
s32 Flags_GetTreasure(PlayState* play, s32 flag) {
|
||||
return play->actorCtx.sceneFlags.chest & (1 << flag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets current scene chest flag.
|
||||
* Sets a current scene chest flag.
|
||||
*/
|
||||
void Flags_SetTreasure(PlayState* play, s32 flag) {
|
||||
play->actorCtx.sceneFlags.chest |= (1 << flag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides the all the chest flags.
|
||||
* Overrides all the current scene chest flags.
|
||||
*/
|
||||
void Flags_SetAllTreasure(PlayState* play, s32 flag) {
|
||||
play->actorCtx.sceneFlags.chest = flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the chest flags.
|
||||
* Returns all the current scene chest flags.
|
||||
*/
|
||||
s32 Flags_GetAllTreasure(PlayState* play) {
|
||||
return play->actorCtx.sceneFlags.chest;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests if current scene clear flag is set.
|
||||
* Tests if a current scene clear flag is set.
|
||||
*/
|
||||
s32 Flags_GetClear(PlayState* play, s32 roomNumber) {
|
||||
return play->actorCtx.sceneFlags.clearedRoom & (1 << roomNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets current scene clear flag.
|
||||
* Sets a current scene clear flag.
|
||||
*/
|
||||
void Flags_SetClear(PlayState* play, s32 roomNumber) {
|
||||
play->actorCtx.sceneFlags.clearedRoom |= (1 << roomNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unsets current scene clear flag.
|
||||
* Unsets a current scene clear flag.
|
||||
*/
|
||||
void Flags_UnsetClear(PlayState* play, s32 roomNumber) {
|
||||
play->actorCtx.sceneFlags.clearedRoom &= ~(1 << roomNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests if current scene temp clear flag is set.
|
||||
* Tests if a current scene temp clear flag is set.
|
||||
*/
|
||||
s32 Flags_GetClearTemp(PlayState* play, s32 roomNumber) {
|
||||
return play->actorCtx.sceneFlags.clearedRoomTemp & (1 << roomNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets current scene temp clear flag.
|
||||
* Sets a current scene temp clear flag.
|
||||
*/
|
||||
void Flags_SetClearTemp(PlayState* play, s32 roomNumber) {
|
||||
play->actorCtx.sceneFlags.clearedRoomTemp |= (1 << roomNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unsets current scene temp clear flag.
|
||||
* Unsets a current scene temp clear flag.
|
||||
*/
|
||||
void Flags_UnsetClearTemp(PlayState* play, s32 roomNumber) {
|
||||
play->actorCtx.sceneFlags.clearedRoomTemp &= ~(1 << roomNumber);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests if current scene collectible flag is set.
|
||||
* Tests if a current scene collectible flag is set.
|
||||
*/
|
||||
s32 Flags_GetCollectible(PlayState* play, s32 flag) {
|
||||
if ((flag > 0) && (flag < 0x80)) {
|
||||
@@ -833,7 +833,7 @@ s32 Flags_GetCollectible(PlayState* play, s32 flag) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets current scene collectible flag.
|
||||
* Sets a current scene collectible flag.
|
||||
*/
|
||||
void Flags_SetCollectible(PlayState* play, s32 flag) {
|
||||
if ((flag > 0) && (flag < 0x80)) {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "global.h"
|
||||
#include "overlays/actors/ovl_En_Elforg/z_en_elforg.h"
|
||||
#include "objects/gameplay_keep/gameplay_keep.h"
|
||||
#include "objects/object_gi_hearts/object_gi_hearts.h"
|
||||
#include "overlays/actors/ovl_En_Elf/z_en_elf.h"
|
||||
@@ -935,9 +936,9 @@ Actor* Item_DropCollectible(PlayState* play, Vec3f* spawnPos, u32 params) {
|
||||
SoundSource_PlaySfxAtFixedWorldPos(play, spawnPos, 40, NA_SE_EV_BUTTERFRY_TO_FAIRY);
|
||||
}
|
||||
} else {
|
||||
spawnedActor =
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ELFORG, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0,
|
||||
0, STRAY_FAIRY_PARAMS(((param7F00 >> 8) & 0x7F), 0, STRAY_FAIRY_TYPE_COLLECTIBLE));
|
||||
spawnedActor = Actor_Spawn(
|
||||
&play->actorCtx, play, ACTOR_EN_ELFORG, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0, 0,
|
||||
STRAY_FAIRY_PARAMS((param7F00 >> 8) & 0x7F, STRAY_FAIRY_AREA_CLOCK_TOWN, STRAY_FAIRY_TYPE_COLLECTIBLE));
|
||||
if (param20000 == 0) {
|
||||
if (!Flags_GetCollectible(play, (param7F00 >> 8) & 0x7F)) {
|
||||
SoundSource_PlaySfxAtFixedWorldPos(play, spawnPos, 40, NA_SE_EV_BUTTERFRY_TO_FAIRY);
|
||||
@@ -993,9 +994,9 @@ Actor* Item_DropCollectible2(PlayState* play, Vec3f* spawnPos, s32 params) {
|
||||
spawnedActor = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f,
|
||||
spawnPos->z, 0, 0, 0, FAIRY_PARAMS(FAIRY_TYPE_2, true, param7F00 >> 8));
|
||||
} else {
|
||||
spawnedActor =
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ELFORG, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0,
|
||||
0, STRAY_FAIRY_PARAMS(((param7F00 >> 8) & 0x7F), 0, STRAY_FAIRY_TYPE_COLLECTIBLE));
|
||||
spawnedActor = Actor_Spawn(
|
||||
&play->actorCtx, play, ACTOR_EN_ELFORG, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0, 0,
|
||||
STRAY_FAIRY_PARAMS((param7F00 >> 8) & 0x7F, STRAY_FAIRY_AREA_CLOCK_TOWN, STRAY_FAIRY_TYPE_COLLECTIBLE));
|
||||
}
|
||||
if (Flags_GetCollectible(play, (param7F00 >> 8) & 0x7F) == 0) {
|
||||
SoundSource_PlaySfxAtFixedWorldPos(play, spawnPos, 40, NA_SE_EV_BUTTERFRY_TO_FAIRY);
|
||||
|
||||
@@ -97,7 +97,8 @@ u16 sPersistentCycleWeekEventRegs[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEve
|
||||
/* 20 */ 0,
|
||||
/* 21 */ 0,
|
||||
/* 22 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_22_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_22_80),
|
||||
/* 23 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_23_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_23_80),
|
||||
/* 23 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_OBTAINED_GREAT_SPIN_ATTACK) |
|
||||
PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_23_80),
|
||||
/* 24 */ PERSISTENT_WEEKEVENTREG_ALT(WEEKEVENTREG_24_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_24_80),
|
||||
/* 25 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_25_01),
|
||||
/* 26 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_26_40),
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,15 +2,65 @@
|
||||
#define Z_BG_DY_YOSEIZO_H
|
||||
|
||||
#include "global.h"
|
||||
#include "overlays/actors/ovl_En_Dy_Extra/z_en_dy_extra.h"
|
||||
#include "objects/object_dy_obj/object_dy_obj.h"
|
||||
|
||||
struct BgDyYoseizo;
|
||||
|
||||
typedef void (*BgDyYoseizoActionFunc)(struct BgDyYoseizo*, PlayState*);
|
||||
|
||||
#define GREAT_FAIRY_GET_SWITCHFLAG(thisx) (((thisx)->params & 0xFE00) >> 9)
|
||||
#define GREAT_FAIRY_GET_TYPE(thisx) ((thisx)->params & 0xF)
|
||||
#define GREAT_FAIRY_ROTZ(thisx) ((thisx)->home.rot.z)
|
||||
|
||||
typedef enum GreatFairyType {
|
||||
/* 0 */ GREAT_FAIRY_TYPE_MAGIC,
|
||||
/* 1 */ GREAT_FAIRY_TYPE_POWER,
|
||||
/* 2 */ GREAT_FAIRY_TYPE_WISDOM,
|
||||
/* 3 */ GREAT_FAIRY_TYPE_COURAGE,
|
||||
/* 4 */ GREAT_FAIRY_TYPE_KINDNESS
|
||||
} GreatFairyType;
|
||||
|
||||
#define BG_DY_YOSEIZO_EFFECT_COUNT 200
|
||||
|
||||
typedef struct BgDyYoseizoEffect {
|
||||
/* 0x00 */ u8 alive; // drawn if 1, respawn if 0
|
||||
/* 0x04 */ Vec3f pos;
|
||||
/* 0x10 */ Vec3f velocity;
|
||||
/* 0x1C */ Vec3f accel;
|
||||
/* 0x28 */ Color_RGB8 primColor;
|
||||
/* 0x2B */ Color_RGB8 envColor;
|
||||
/* 0x2E */ s16 alpha;
|
||||
/* 0x30 */ f32 scale;
|
||||
/* 0x34 */ s16 timer; // lifetime
|
||||
/* 0x36 */ s16 type; // 0 is general radiance, else is directed towards Player
|
||||
/* 0x38 */ s16 pitch;
|
||||
/* 0x3A */ s16 yaw;
|
||||
/* 0x3C */ s16 roll; // all three are f32 in OoT
|
||||
} BgDyYoseizoEffect; // size = 0x40
|
||||
|
||||
typedef struct BgDyYoseizo {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x0144 */ BgDyYoseizoActionFunc actionFunc;
|
||||
/* 0x0148 */ char unk_148[0x33BC];
|
||||
/* 0x0148 */ SkelAnime skelAnime;
|
||||
/* 0x018C */ Vec3s jointTable[GREAT_FAIRY_LIMB_MAX];
|
||||
/* 0x0234 */ Vec3s morphTable[GREAT_FAIRY_LIMB_MAX];
|
||||
/* 0x02DC */ Vec3s headRot;
|
||||
/* 0x02DC */ Vec3s torsoRot;
|
||||
/* 0x02E8 */ EnDyExtra* beam;
|
||||
/* 0x02EC */ f32 unk2EC; // unused
|
||||
/* 0x02F0 */ f32 unk2F0;
|
||||
/* 0x02F4 */ f32 unk2F4;
|
||||
/* 0x02F8 */ union {
|
||||
s16 unk2F8;
|
||||
s16 csId; // used on BgDyYoseizo_TrainPlayer
|
||||
};
|
||||
/* 0x02FA */ s16 eyeIndex;
|
||||
/* 0x02FC */ s16 mouthIndex;
|
||||
/* 0x02FE */ s16 blinkTimer;
|
||||
/* 0x0300 */ s16 timer;
|
||||
/* 0x0302 */ u16 unk302;
|
||||
/* 0x0304 */ BgDyYoseizoEffect effects[BG_DY_YOSEIZO_EFFECT_COUNT];
|
||||
} BgDyYoseizo; // size = 0x3504
|
||||
|
||||
#endif // Z_BG_DY_YOSEIZO_H
|
||||
|
||||
@@ -16,14 +16,13 @@ void DemoEffect_Init(Actor* thisx, PlayState* play);
|
||||
void DemoEffect_Destroy(Actor* thisx, PlayState* play);
|
||||
void DemoEffect_Update(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_808CD940(DemoEffect* this, PlayState* play);
|
||||
void func_808CD998(DemoEffect* this, PlayState* play);
|
||||
void func_808CDBDC(DemoEffect* this, PlayState* play);
|
||||
void func_808CDCEC(DemoEffect* this, PlayState* play);
|
||||
void func_808CDD70(DemoEffect* this, PlayState* play);
|
||||
void func_808CDDE0(DemoEffect* this, PlayState* play);
|
||||
void func_808CDFF8(Actor* thisx, PlayState* play);
|
||||
void func_808CE078(Actor* thisx, PlayState* play2);
|
||||
void DemoEffect_WaitForObject(DemoEffect* this, PlayState* play);
|
||||
void DemoEffect_SetupTimewarp(DemoEffect* this, PlayState* play);
|
||||
void DemoEffect_StartTimewarp(DemoEffect* this, PlayState* play);
|
||||
void DemoEffect_ShrinkLight(DemoEffect* this, PlayState* play);
|
||||
void DemoEffect_ExpandLight(DemoEffect* this, PlayState* play);
|
||||
void DemoEffect_DrawTimewarp(Actor* thisx, PlayState* play);
|
||||
void DemoEffect_DrawLight(Actor* thisx, PlayState* play2);
|
||||
|
||||
ActorInit Demo_Effect_InitVars = {
|
||||
ACTOR_DEMO_EFFECT,
|
||||
@@ -47,8 +46,12 @@ void DemoEffect_Init(Actor* thisx, PlayState* play) {
|
||||
s32 type = DEMO_EFFECT_GET_TYPE(&this->actor);
|
||||
s32 objectIndex;
|
||||
s32 pad2;
|
||||
Color_RGB8 colors[] = {
|
||||
{ 200, 200, 0 }, { 255, 40, 100 }, { 50, 255, 0 }, { 0, 0, 255 }, { 255, 255, 80 },
|
||||
Color_RGB8 lightColors[] = {
|
||||
{ 200, 200, 0 }, // Yellow
|
||||
{ 255, 40, 100 }, // Pink
|
||||
{ 50, 255, 0 }, // Light green
|
||||
{ 0, 0, 255 }, // Blue
|
||||
{ 255, 255, 80 }, // Light Yellow
|
||||
};
|
||||
|
||||
if (sEffectTypeObjects[type] == GAMEPLAY_KEEP) {
|
||||
@@ -66,14 +69,14 @@ void DemoEffect_Init(Actor* thisx, PlayState* play) {
|
||||
Actor_SetScale(&this->actor, 0.2f);
|
||||
|
||||
switch (type) {
|
||||
case DEMO_EFFECT_TYPE_0:
|
||||
case DEMO_EFFECT_TYPE_1:
|
||||
case DEMO_EFFECT_TIMEWARP_TIMEBLOCK_LARGE:
|
||||
case DEMO_EFFECT_TIMEWARP_TIMEBLOCK_SMALL:
|
||||
this->actor.flags |= ACTOR_FLAG_2000000;
|
||||
|
||||
case DEMO_EFFECT_TYPE_2:
|
||||
case DEMO_EFFECT_TYPE_3:
|
||||
this->initDrawFunc = func_808CDFF8;
|
||||
this->initActionFunc = func_808CD998;
|
||||
// FALLTHROUGH
|
||||
case DEMO_EFFECT_TIMEWARP_LIGHTBLOCK_LARGE:
|
||||
case DEMO_EFFECT_TIMEWARP_LIGHTBLOCK_VERY_LARGE:
|
||||
this->initDrawFunc = DemoEffect_DrawTimewarp;
|
||||
this->initActionFunc = DemoEffect_SetupTimewarp;
|
||||
this->envXluColor[0] = 0;
|
||||
this->envXluColor[1] = 100;
|
||||
this->envXluColor[2] = 255;
|
||||
@@ -81,17 +84,17 @@ void DemoEffect_Init(Actor* thisx, PlayState* play) {
|
||||
this->timer = 0;
|
||||
break;
|
||||
|
||||
case DEMO_EFFECT_TYPE_4:
|
||||
case DEMO_EFFECT_TYPE_5:
|
||||
case DEMO_EFFECT_TYPE_6:
|
||||
case DEMO_EFFECT_TYPE_7:
|
||||
case DEMO_EFFECT_TYPE_8:
|
||||
this->envXluColor[0] = colors[type - 4].r;
|
||||
this->envXluColor[1] = colors[type - 4].g;
|
||||
this->envXluColor[2] = colors[type - 4].b;
|
||||
case DEMO_EFFECT_TYPE_LIGHT_DARK_YELLOW:
|
||||
case DEMO_EFFECT_TYPE_LIGHT_PINK:
|
||||
case DEMO_EFFECT_TYPE_LIGHT_GREEN:
|
||||
case DEMO_EFFECT_TYPE_LIGHT_BLUE:
|
||||
case DEMO_EFFECT_TYPE_LIGHT_YELLOW:
|
||||
this->envXluColor[0] = lightColors[type - DEMO_EFFECT_TYPE_LIGHT_BASE].r;
|
||||
this->envXluColor[1] = lightColors[type - DEMO_EFFECT_TYPE_LIGHT_BASE].g;
|
||||
this->envXluColor[2] = lightColors[type - DEMO_EFFECT_TYPE_LIGHT_BASE].b;
|
||||
Actor_SetScale(&this->actor, 0.0f);
|
||||
this->initDrawFunc = func_808CE078;
|
||||
this->initActionFunc = func_808CDDE0;
|
||||
this->initDrawFunc = DemoEffect_DrawLight;
|
||||
this->initActionFunc = DemoEffect_ExpandLight;
|
||||
this->timer = 0;
|
||||
break;
|
||||
|
||||
@@ -100,17 +103,17 @@ void DemoEffect_Init(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
|
||||
this->actionFunc = func_808CD940;
|
||||
this->actionFunc = DemoEffect_WaitForObject;
|
||||
}
|
||||
|
||||
void DemoEffect_Destroy(Actor* thisx, PlayState* play) {
|
||||
DemoEffect* this = THIS;
|
||||
|
||||
switch (DEMO_EFFECT_GET_TYPE(&this->actor)) {
|
||||
case DEMO_EFFECT_TYPE_0:
|
||||
case DEMO_EFFECT_TYPE_1:
|
||||
case DEMO_EFFECT_TYPE_2:
|
||||
case DEMO_EFFECT_TYPE_3:
|
||||
case DEMO_EFFECT_TIMEWARP_TIMEBLOCK_LARGE:
|
||||
case DEMO_EFFECT_TIMEWARP_TIMEBLOCK_SMALL:
|
||||
case DEMO_EFFECT_TIMEWARP_LIGHTBLOCK_LARGE:
|
||||
case DEMO_EFFECT_TIMEWARP_LIGHTBLOCK_VERY_LARGE:
|
||||
SkelCurve_Destroy(play, &this->skelCurve);
|
||||
break;
|
||||
|
||||
@@ -119,7 +122,7 @@ void DemoEffect_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_808CD940(DemoEffect* this, PlayState* play) {
|
||||
void DemoEffect_WaitForObject(DemoEffect* this, PlayState* play) {
|
||||
if (Object_IsLoaded(&play->objectCtx, this->initObjectIndex)) {
|
||||
this->actor.objBankIndex = this->initObjectIndex;
|
||||
this->actor.draw = this->initDrawFunc;
|
||||
@@ -127,41 +130,41 @@ void func_808CD940(DemoEffect* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_808CD998(DemoEffect* this, PlayState* play) {
|
||||
void DemoEffect_SetupTimewarp(DemoEffect* this, PlayState* play) {
|
||||
s32 type = DEMO_EFFECT_GET_TYPE(&this->actor);
|
||||
|
||||
if (SkelCurve_Init(play, &this->skelCurve, &object_efc_tw_Skel_0012E8, &object_efc_tw_CurveAnim_000050)) {}
|
||||
if (SkelCurve_Init(play, &this->skelCurve, &gTimewarpSkel, &gTimewarpAnim)) {}
|
||||
|
||||
SkelCurve_SetAnim(&this->skelCurve, &object_efc_tw_CurveAnim_000050, 1.0f, 59.0f, 1.0f, 1.7f);
|
||||
SkelCurve_SetAnim(&this->skelCurve, &gTimewarpAnim, 1.0f, 59.0f, 1.0f, 1.7f);
|
||||
SkelCurve_Update(play, &this->skelCurve);
|
||||
this->actionFunc = func_808CDCEC;
|
||||
this->actionFunc = DemoEffect_StartTimewarp;
|
||||
|
||||
switch (type) {
|
||||
case DEMO_EFFECT_TYPE_0:
|
||||
Actor_SetScale(&this->actor, 0.16800001f);
|
||||
case DEMO_EFFECT_TIMEWARP_TIMEBLOCK_LARGE:
|
||||
Actor_SetScale(&this->actor, 168.0f * 0.001f);
|
||||
break;
|
||||
|
||||
case DEMO_EFFECT_TYPE_1:
|
||||
Actor_SetScale(&this->actor, 0.08400001f);
|
||||
case DEMO_EFFECT_TIMEWARP_TIMEBLOCK_SMALL:
|
||||
Actor_SetScale(&this->actor, 84.0f * 0.001f);
|
||||
break;
|
||||
|
||||
case DEMO_EFFECT_TYPE_2:
|
||||
Actor_SetScale(&this->actor, 0.16800001f);
|
||||
case DEMO_EFFECT_TIMEWARP_LIGHTBLOCK_LARGE:
|
||||
Actor_SetScale(&this->actor, 168.0f * 0.001f);
|
||||
break;
|
||||
|
||||
case DEMO_EFFECT_TYPE_3:
|
||||
Actor_SetScale(&this->actor, 0.28f);
|
||||
case DEMO_EFFECT_TIMEWARP_LIGHTBLOCK_VERY_LARGE:
|
||||
Actor_SetScale(&this->actor, 280.0f * 0.001f);
|
||||
break;
|
||||
|
||||
default:
|
||||
Actor_SetScale(&this->actor, 0.014f);
|
||||
Actor_SetScale(&this->actor, 14.0f * 0.001f);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_808CDAD0(f32 alphaScale) {
|
||||
void DemoEffect_SetPerVertexAlpha(f32 alphaScale) {
|
||||
static u8 sAlphaTypes[] = { 1, 1, 2, 0, 1, 1, 2, 0, 1, 2, 0, 2, 1, 0, 1, 0, 2, 0, 2, 2, 0 };
|
||||
Vtx* vtx = Lib_SegmentedToVirtual(object_efc_tw_Vtx_000060);
|
||||
Vtx* vtx = Lib_SegmentedToVirtual(gTimewarpVtx);
|
||||
s32 i;
|
||||
u8 alphas[3];
|
||||
|
||||
@@ -176,7 +179,10 @@ void func_808CDAD0(f32 alphaScale) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_808CDBDC(DemoEffect* this, PlayState* play) {
|
||||
/**
|
||||
* Shrink and fade linearly for 100 frames then remove.
|
||||
*/
|
||||
void DemoEffect_FinishTimewarp(DemoEffect* this, PlayState* play) {
|
||||
s32 type = DEMO_EFFECT_GET_TYPE(&this->actor);
|
||||
f32 scale;
|
||||
f32 alphaScale;
|
||||
@@ -187,19 +193,19 @@ void func_808CDBDC(DemoEffect* this, PlayState* play) {
|
||||
scale = alphaScale * 0.14f;
|
||||
|
||||
switch (type) {
|
||||
case DEMO_EFFECT_TYPE_0:
|
||||
case DEMO_EFFECT_TIMEWARP_TIMEBLOCK_LARGE:
|
||||
scale *= 1.2f;
|
||||
break;
|
||||
|
||||
case DEMO_EFFECT_TYPE_1:
|
||||
case DEMO_EFFECT_TIMEWARP_TIMEBLOCK_SMALL:
|
||||
scale *= 0.6f;
|
||||
break;
|
||||
|
||||
case DEMO_EFFECT_TYPE_2:
|
||||
case DEMO_EFFECT_TIMEWARP_LIGHTBLOCK_LARGE:
|
||||
scale *= 1.2f;
|
||||
break;
|
||||
|
||||
case DEMO_EFFECT_TYPE_3:
|
||||
case DEMO_EFFECT_TIMEWARP_LIGHTBLOCK_VERY_LARGE:
|
||||
scale *= 2.0f;
|
||||
break;
|
||||
|
||||
@@ -209,25 +215,31 @@ void func_808CDBDC(DemoEffect* this, PlayState* play) {
|
||||
|
||||
this->actor.scale.x = scale;
|
||||
this->actor.scale.z = scale;
|
||||
func_808CDAD0(alphaScale);
|
||||
DemoEffect_SetPerVertexAlpha(alphaScale);
|
||||
Actor_PlaySfx_FlaggedCentered3(&this->actor, NA_SE_EV_TIMETRIP_LIGHT - SFX_FLAG);
|
||||
} else {
|
||||
func_808CDAD0(1.0f);
|
||||
DemoEffect_SetPerVertexAlpha(1.0f);
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
}
|
||||
|
||||
void func_808CDCEC(DemoEffect* this, PlayState* play) {
|
||||
/**
|
||||
* Runs until animation plays to frame 59 and pauses it on frame 59.
|
||||
*/
|
||||
void DemoEffect_StartTimewarp(DemoEffect* this, PlayState* play) {
|
||||
Actor_PlaySfx_FlaggedCentered3(&this->actor, NA_SE_EV_TIMETRIP_LIGHT - SFX_FLAG);
|
||||
|
||||
if (SkelCurve_Update(play, &this->skelCurve)) {
|
||||
SkelCurve_SetAnim(&this->skelCurve, &object_efc_tw_CurveAnim_000050, 1.0f, 60.0f, 59.0f, 0.0f);
|
||||
this->actionFunc = func_808CDBDC;
|
||||
SkelCurve_SetAnim(&this->skelCurve, &gTimewarpAnim, 1.0f, 60.0f, 59.0f, 0.0f);
|
||||
this->actionFunc = DemoEffect_FinishTimewarp;
|
||||
this->timer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void func_808CDD70(DemoEffect* this, PlayState* play) {
|
||||
/**
|
||||
* Take scale to 0 linearly, when scale is small enough, remove.
|
||||
*/
|
||||
void DemoEffect_ShrinkLight(DemoEffect* this, PlayState* play) {
|
||||
Actor_SetScale(&this->actor, this->actor.scale.x - 0.02f);
|
||||
|
||||
this->timer++;
|
||||
@@ -236,12 +248,16 @@ void func_808CDD70(DemoEffect* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_808CDDE0(DemoEffect* this, PlayState* play) {
|
||||
/**
|
||||
* Changes scale for 3 frames, scale is successively 0.0f, 0.2f, 0.3f, 0.35f (would converge to 0.4 exponentially if run
|
||||
* for a long time).
|
||||
*/
|
||||
void DemoEffect_ExpandLight(DemoEffect* this, PlayState* play) {
|
||||
Actor_SetScale(&this->actor, (this->actor.scale.x * 0.5f) + 0.2f);
|
||||
|
||||
this->timer++;
|
||||
if (this->timer >= 3) {
|
||||
this->actionFunc = func_808CDD70;
|
||||
this->actionFunc = DemoEffect_ShrinkLight;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,7 +267,7 @@ void DemoEffect_Update(Actor* thisx, PlayState* play) {
|
||||
this->actionFunc(this, play);
|
||||
}
|
||||
|
||||
s32 func_808CDE78(PlayState* play, SkelCurve* skelCurve, s32 limbIndex, Actor* thisx) {
|
||||
s32 DemoEffect_OverrideLimbDrawTimewarp(PlayState* play, SkelCurve* skelCurve, s32 limbIndex, Actor* thisx) {
|
||||
s32 pad;
|
||||
DemoEffect* this = THIS;
|
||||
u32 frames = play->gameplayFrames;
|
||||
@@ -278,7 +294,7 @@ s32 func_808CDE78(PlayState* play, SkelCurve* skelCurve, s32 limbIndex, Actor* t
|
||||
return true;
|
||||
}
|
||||
|
||||
void func_808CDFF8(Actor* thisx, PlayState* play) {
|
||||
void DemoEffect_DrawTimewarp(Actor* thisx, PlayState* play) {
|
||||
GraphicsContext* gfxCtx = play->state.gfxCtx;
|
||||
DemoEffect* this = THIS;
|
||||
|
||||
@@ -287,12 +303,12 @@ void func_808CDFF8(Actor* thisx, PlayState* play) {
|
||||
POLY_XLU_DISP = Gfx_SetupDL(POLY_XLU_DISP, SETUPDL_25);
|
||||
|
||||
Matrix_Scale(2.0f, 2.0f, 2.0f, MTXMODE_APPLY);
|
||||
SkelCurve_Draw(&this->actor, play, &this->skelCurve, func_808CDE78, NULL, 1, &this->actor);
|
||||
SkelCurve_Draw(&this->actor, play, &this->skelCurve, DemoEffect_OverrideLimbDrawTimewarp, NULL, 1, &this->actor);
|
||||
|
||||
CLOSE_DISPS(gfxCtx);
|
||||
}
|
||||
|
||||
void func_808CE078(Actor* thisx, PlayState* play2) {
|
||||
void DemoEffect_DrawLight(Actor* thisx, PlayState* play2) {
|
||||
PlayState* play = play2;
|
||||
DemoEffect* this = THIS;
|
||||
s16 zRot = (this->timer * 0x400) & 0xFFFF;
|
||||
|
||||
@@ -11,15 +11,16 @@ typedef void (*DemoEffectActionFunc)(struct DemoEffect*, PlayState*);
|
||||
#define DEMO_EFFECT_GET_TYPE(thisx) ((thisx)->params & 0xFF)
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ DEMO_EFFECT_TYPE_0,
|
||||
/* 1 */ DEMO_EFFECT_TYPE_1,
|
||||
/* 2 */ DEMO_EFFECT_TYPE_2,
|
||||
/* 3 */ DEMO_EFFECT_TYPE_3,
|
||||
/* 4 */ DEMO_EFFECT_TYPE_4,
|
||||
/* 5 */ DEMO_EFFECT_TYPE_5,
|
||||
/* 6 */ DEMO_EFFECT_TYPE_6,
|
||||
/* 7 */ DEMO_EFFECT_TYPE_7,
|
||||
/* 8 */ DEMO_EFFECT_TYPE_8
|
||||
/* 0 */ DEMO_EFFECT_TIMEWARP_TIMEBLOCK_LARGE,
|
||||
/* 1 */ DEMO_EFFECT_TIMEWARP_TIMEBLOCK_SMALL,
|
||||
/* 2 */ DEMO_EFFECT_TIMEWARP_LIGHTBLOCK_LARGE,
|
||||
/* 3 */ DEMO_EFFECT_TIMEWARP_LIGHTBLOCK_VERY_LARGE,
|
||||
/* 4 */ DEMO_EFFECT_TYPE_LIGHT_BASE,
|
||||
/* 4 */ DEMO_EFFECT_TYPE_LIGHT_DARK_YELLOW = DEMO_EFFECT_TYPE_LIGHT_BASE,
|
||||
/* 5 */ DEMO_EFFECT_TYPE_LIGHT_PINK,
|
||||
/* 6 */ DEMO_EFFECT_TYPE_LIGHT_GREEN,
|
||||
/* 7 */ DEMO_EFFECT_TYPE_LIGHT_BLUE,
|
||||
/* 8 */ DEMO_EFFECT_TYPE_LIGHT_YELLOW // Unused
|
||||
} DemoEffectType;
|
||||
|
||||
typedef struct DemoEffect {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* File: z_demo_getitem.c
|
||||
* Overlay: ovl_Demo_Getitem
|
||||
* Description: Cutscene objectIndex for Great Fairy's Mask and Great Fairy's Sword
|
||||
* Description: Cutscene objects for Great Fairy's Mask and Great Fairy's Sword
|
||||
*/
|
||||
|
||||
#include "z_demo_getitem.h"
|
||||
@@ -14,8 +14,8 @@ void DemoGetitem_Init(Actor* thisx, PlayState* play);
|
||||
void DemoGetitem_Destroy(Actor* thisx, PlayState* play);
|
||||
void DemoGetitem_Update(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_80A4FB10(DemoGetitem* this, PlayState* play);
|
||||
void func_80A4FB68(DemoGetitem* this, PlayState* play2);
|
||||
void DemoGetitem_Wait(DemoGetitem* this, PlayState* play);
|
||||
void DemoGetitem_PerformCutsceneActions(DemoGetitem* this, PlayState* play);
|
||||
void DemoGetitem_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
ActorInit Demo_Getitem_InitVars = {
|
||||
@@ -36,20 +36,27 @@ static s16 sGetItemDraws[] = { GID_MASK_GREAT_FAIRY, GID_SWORD_GREAT_FAIRY };
|
||||
|
||||
static u16 sCueTypes[] = { CS_CMD_ACTOR_CUE_110, CS_CMD_ACTOR_CUE_566 };
|
||||
|
||||
typedef enum GreatFairyRewardItem {
|
||||
/* 0 */ DEMOGETITEM_ITEM_MASK_GREAT_FAIRY,
|
||||
/* 1 */ DEMOGETITEM_ITEM_SWORD_GREAT_FAIRY
|
||||
} GreatFairyRewardItem;
|
||||
|
||||
void DemoGetitem_Init(Actor* thisx, PlayState* play) {
|
||||
s32 pad;
|
||||
s32 objectIndex;
|
||||
s32 itemIndex;
|
||||
DemoGetitem* this = THIS;
|
||||
|
||||
itemIndex = 0;
|
||||
if (DEMOGETITEM_GET_F(thisx) == 1) {
|
||||
itemIndex = 1;
|
||||
itemIndex = DEMOGETITEM_ITEM_MASK_GREAT_FAIRY;
|
||||
if (DEMOGETITEM_GET_F(&this->actor) == 1) {
|
||||
itemIndex = DEMOGETITEM_ITEM_SWORD_GREAT_FAIRY;
|
||||
}
|
||||
|
||||
Actor_SetScale(&this->actor, 0.25f);
|
||||
this->actionFunc = func_80A4FB10;
|
||||
this->item = sGetItemDraws[itemIndex];
|
||||
this->actionFunc = DemoGetitem_Wait;
|
||||
this->getItemDrawId = sGetItemDraws[itemIndex];
|
||||
this->cueType = sCueTypes[itemIndex];
|
||||
|
||||
objectIndex = Object_GetIndex(&play->objectCtx, sObjectBankIndices[itemIndex]);
|
||||
if (objectIndex < 0) {
|
||||
Actor_Kill(&this->actor);
|
||||
@@ -62,22 +69,23 @@ void DemoGetitem_Init(Actor* thisx, PlayState* play) {
|
||||
void DemoGetitem_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A4FB10(DemoGetitem* this, PlayState* play) {
|
||||
void DemoGetitem_Wait(DemoGetitem* this, PlayState* play) {
|
||||
if (Object_IsLoaded(&play->objectCtx, this->objectIndex)) {
|
||||
this->actor.draw = NULL;
|
||||
this->actor.objBankIndex = this->objectIndex;
|
||||
this->actionFunc = func_80A4FB68;
|
||||
this->actionFunc = DemoGetitem_PerformCutsceneActions;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A4FB68(DemoGetitem* this, PlayState* play2) {
|
||||
PlayState* play = play2;
|
||||
u16 sp22 = (play->gameplayFrames * 1000) & 0xFFFF;
|
||||
void DemoGetitem_PerformCutsceneActions(DemoGetitem* this, PlayState* play) {
|
||||
s32 pad;
|
||||
u16 bobPhase = (play->gameplayFrames * 1000) % 0x10000;
|
||||
|
||||
if (Cutscene_IsCueInChannel(play, this->cueType)) {
|
||||
if (play->csCtx.actorCues[Cutscene_GetCueChannel(play, this->cueType)]->id != 4) {
|
||||
this->actor.shape.yOffset = 0.0f;
|
||||
}
|
||||
|
||||
switch (play->csCtx.actorCues[Cutscene_GetCueChannel(play, this->cueType)]->id) {
|
||||
case 2:
|
||||
this->actor.draw = DemoGetitem_Draw;
|
||||
@@ -92,7 +100,7 @@ void func_80A4FB68(DemoGetitem* this, PlayState* play2) {
|
||||
case 4:
|
||||
this->actor.draw = DemoGetitem_Draw;
|
||||
Cutscene_ActorTranslateAndYaw(&this->actor, play, Cutscene_GetCueChannel(play, this->cueType));
|
||||
this->actor.shape.yOffset = Math_SinS(sp22) * 15.0f;
|
||||
this->actor.shape.yOffset = Math_SinS(bobPhase) * 15.0f;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -115,5 +123,5 @@ void DemoGetitem_Draw(Actor* thisx, PlayState* play) {
|
||||
|
||||
func_800B8050(&this->actor, play, 0);
|
||||
func_800B8118(&this->actor, play, 0);
|
||||
GetItem_Draw(play, this->item);
|
||||
GetItem_Draw(play, this->getItemDrawId);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ typedef void (*DemoGetitemActionFunc)(struct DemoGetitem*, PlayState*);
|
||||
|
||||
typedef struct DemoGetitem {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ s16 item;
|
||||
/* 0x144 */ s16 getItemDrawId;
|
||||
/* 0x146 */ u16 cueType;
|
||||
/* 0x148 */ s8 objectIndex;
|
||||
/* 0x14C */ DemoGetitemActionFunc actionFunc;
|
||||
|
||||
@@ -539,7 +539,8 @@ void EnBox_Open(EnBox* this, PlayState* play) {
|
||||
Actor_SpawnAsChild(&play->actorCtx, &this->dyna.actor, play, ACTOR_EN_ELFORG, this->dyna.actor.world.pos.x,
|
||||
this->dyna.actor.world.pos.y, this->dyna.actor.world.pos.z, this->dyna.actor.world.rot.x,
|
||||
this->dyna.actor.world.rot.y, this->dyna.actor.world.rot.z,
|
||||
STRAY_FAIRY_PARAMS(ENBOX_GET_CHEST_FLAG(&this->dyna.actor), 0, STRAY_FAIRY_TYPE_CHEST));
|
||||
STRAY_FAIRY_PARAMS(ENBOX_GET_CHEST_FLAG(&this->dyna.actor), STRAY_FAIRY_AREA_CLOCK_TOWN,
|
||||
STRAY_FAIRY_TYPE_CHEST));
|
||||
} else if (this->movementFlags & ENBOX_MOVE_0x40) {
|
||||
this->movementFlags &= ~ENBOX_MOVE_0x40;
|
||||
}
|
||||
|
||||
@@ -16,8 +16,8 @@ void EnDyExtra_Destroy(Actor* thisx, PlayState* play);
|
||||
void EnDyExtra_Update(Actor* thisx, PlayState* play);
|
||||
void EnDyExtra_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_80A61334(EnDyExtra* this, PlayState* play);
|
||||
void func_80A613C8(EnDyExtra* this, PlayState* play);
|
||||
void EnDyExtra_WaitForTrigger(EnDyExtra* this, PlayState* play);
|
||||
void EnDyExtra_Fall(EnDyExtra* this, PlayState* play);
|
||||
|
||||
ActorInit En_Dy_Extra_InitVars = {
|
||||
ACTOR_EN_DY_EXTRA,
|
||||
@@ -41,35 +41,35 @@ void EnDyExtra_Init(Actor* thisx, PlayState* play) {
|
||||
this->actor.scale.x = 0.025f;
|
||||
this->actor.scale.y = 0.039f;
|
||||
this->actor.scale.z = 0.025f;
|
||||
this->unk160 = this->actor.world.pos;
|
||||
this->initPos = this->actor.world.pos;
|
||||
this->actor.gravity = -0.2f;
|
||||
this->unk150 = 1.0f;
|
||||
this->unk14C = 0x3C;
|
||||
this->actionFunc = func_80A61334;
|
||||
this->alphaScale = 1.0f;
|
||||
this->timer = 60;
|
||||
this->actionFunc = EnDyExtra_WaitForTrigger;
|
||||
}
|
||||
|
||||
void func_80A61334(EnDyExtra* this, PlayState* play) {
|
||||
void EnDyExtra_WaitForTrigger(EnDyExtra* this, PlayState* play) {
|
||||
Math_ApproachF(&this->actor.gravity, 0.0f, 0.1f, 0.005f);
|
||||
|
||||
if (this->actor.world.pos.y < -85.0f) {
|
||||
this->actor.velocity.y = 0.0f;
|
||||
}
|
||||
|
||||
if ((this->unk14C == 0) && (this->unk14A != 0)) {
|
||||
this->unk14C = 0x32;
|
||||
this->actionFunc = func_80A613C8;
|
||||
if ((this->timer == 0) && this->trigger) {
|
||||
this->timer = 50;
|
||||
this->actionFunc = EnDyExtra_Fall;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A613C8(EnDyExtra* this, PlayState* play) {
|
||||
void EnDyExtra_Fall(EnDyExtra* this, PlayState* play) {
|
||||
Math_ApproachF(&this->actor.gravity, 0.0f, 0.1f, 0.005f);
|
||||
|
||||
if ((this->unk14C == 0) || (this->unk150 < 0.02f)) {
|
||||
if ((this->timer == 0) || (this->alphaScale < 0.02f)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
||||
this->unk150 -= 0.02f;
|
||||
this->alphaScale -= 0.02f;
|
||||
|
||||
if (this->actor.world.pos.y < -85.0f) {
|
||||
this->actor.velocity.y = 0.0f;
|
||||
@@ -79,40 +79,40 @@ void func_80A613C8(EnDyExtra* this, PlayState* play) {
|
||||
void EnDyExtra_Update(Actor* thisx, PlayState* play) {
|
||||
EnDyExtra* this = THIS;
|
||||
|
||||
DECR(this->unk14C);
|
||||
DECR(this->timer);
|
||||
Actor_PlaySfx(&this->actor, NA_SE_PL_SPIRAL_HEAL_BEAM - SFX_FLAG);
|
||||
this->actionFunc(this, play);
|
||||
Actor_MoveWithGravity(&this->actor);
|
||||
}
|
||||
|
||||
static Color_RGBA8 D_80A61740[] = {
|
||||
static Color_RGBA8 sPrimColors[] = {
|
||||
{ 255, 255, 170, 255 }, { 255, 170, 255, 255 }, { 255, 255, 170, 255 },
|
||||
{ 170, 255, 255, 255 }, { 255, 255, 170, 255 },
|
||||
};
|
||||
|
||||
static Color_RGBA8 D_80A61754[] = {
|
||||
static Color_RGBA8 sEnvColors[] = {
|
||||
{ 255, 100, 0, 255 }, { 255, 0, 100, 255 }, { 100, 255, 0, 255 }, { 0, 100, 255, 255 }, { 255, 230, 0, 255 }
|
||||
};
|
||||
|
||||
static u8 D_80A61768[] = {
|
||||
2, 1, 1, 2, 0, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 1, 2, 0, 0,
|
||||
static u8 sAlphaTypeIndices[] = {
|
||||
2, 1, 1, 2, 0, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 1, 2, 0,
|
||||
};
|
||||
|
||||
void EnDyExtra_Draw(Actor* thisx, PlayState* play) {
|
||||
EnDyExtra* this = THIS;
|
||||
s32 pad;
|
||||
EnDyExtra* this = THIS;
|
||||
GraphicsContext* gfxCtx = play->state.gfxCtx;
|
||||
Vtx* vertices = Lib_SegmentedToVirtual(object_dy_obj_Vtx_00DD40);
|
||||
Vtx* vertices = Lib_SegmentedToVirtual(gGreatFairySpiralBeamVtx);
|
||||
s32 i;
|
||||
u8 unk[3];
|
||||
u8 alphas[3];
|
||||
|
||||
unk[0] = 0.0f;
|
||||
unk[1] = (s8)(this->unk150 * 240.0f);
|
||||
unk[2] = (s8)(this->unk150 * 255.0f);
|
||||
alphas[0] = 0.0f;
|
||||
alphas[1] = (s32)(this->alphaScale * 240.0f);
|
||||
alphas[2] = (s32)(this->alphaScale * 255.0f);
|
||||
|
||||
for (i = 0; i < 27; i++) {
|
||||
if (D_80A61768[i]) {
|
||||
vertices[i].v.cn[3] = unk[D_80A61768[i]];
|
||||
for (i = 0; i < ARRAY_COUNT(sAlphaTypeIndices); i++) {
|
||||
if (sAlphaTypeIndices[i]) {
|
||||
vertices[i].v.cn[3] = alphas[sAlphaTypeIndices[i]];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,10 +124,10 @@ void EnDyExtra_Draw(Actor* thisx, PlayState* play) {
|
||||
play->state.frames * -8, 0x10, 0x10));
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, D_80A61740[this->type].r, D_80A61740[this->type].g,
|
||||
D_80A61740[this->type].b, 255);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, D_80A61754[this->type].r, D_80A61754[this->type].g, D_80A61754[this->type].b, 128);
|
||||
gSPDisplayList(POLY_XLU_DISP++, object_dy_obj_DL_00DEF0);
|
||||
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, sPrimColors[this->type].r, sPrimColors[this->type].g,
|
||||
sPrimColors[this->type].b, 255);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, sEnvColors[this->type].r, sEnvColors[this->type].g, sEnvColors[this->type].b, 128);
|
||||
gSPDisplayList(POLY_XLU_DISP++, gGreatFairySpiralBeamDL);
|
||||
|
||||
CLOSE_DISPS(gfxCtx);
|
||||
}
|
||||
|
||||
@@ -11,12 +11,11 @@ typedef struct EnDyExtra {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ EnDyExtraActionFunc actionFunc;
|
||||
/* 0x148 */ s16 type;
|
||||
/* 0x14A */ s16 unk14A;
|
||||
/* 0x14C */ s16 unk14C;
|
||||
/* 0x14E */ s16 unk14E;
|
||||
/* 0x150 */ f32 unk150;
|
||||
/* 0x154 */ UNK_TYPE1 unk154[0xC];
|
||||
/* 0x160 */ Vec3f unk160;
|
||||
/* 0x14A */ s16 trigger;
|
||||
/* 0x14C */ s16 timer;
|
||||
/* 0x150 */ f32 alphaScale;
|
||||
/* 0x154 */ Vec3f scale; // not used, leftover from OoT
|
||||
/* 0x160 */ Vec3f initPos; // set and not used
|
||||
} EnDyExtra; // size = 0x16C
|
||||
|
||||
#endif // Z_EN_DY_EXTRA_H
|
||||
|
||||
@@ -744,7 +744,7 @@ void func_8088E0F0(EnElf* this, PlayState* play) {
|
||||
if (this->unk_250 < 2.0f) {
|
||||
this->unk_250 += 0.1f;
|
||||
} else {
|
||||
gSaveContext.healthAccumulator = 160;
|
||||
gSaveContext.healthAccumulator = 0xA0;
|
||||
this->unk_246++;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -73,10 +73,11 @@ void EnElfbub_Init(Actor* thisx, PlayState* play) {
|
||||
Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
|
||||
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
|
||||
|
||||
childActor = Actor_SpawnAsChild(
|
||||
&play->actorCtx, &this->actor, play, ACTOR_EN_ELFORG, this->actor.world.pos.x, this->actor.world.pos.y + 12.0f,
|
||||
this->actor.world.pos.z, this->actor.world.rot.x, this->actor.world.rot.y, this->actor.world.rot.z,
|
||||
STRAY_FAIRY_PARAMS(ENELFBUB_GET_SWITCHFLAG(&this->actor), 0, STRAY_FAIRY_TYPE_BUBBLE));
|
||||
childActor = Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_ELFORG, this->actor.world.pos.x,
|
||||
this->actor.world.pos.y + 12.0f, this->actor.world.pos.z, this->actor.world.rot.x,
|
||||
this->actor.world.rot.y, this->actor.world.rot.z,
|
||||
STRAY_FAIRY_PARAMS(ENELFBUB_GET_SWITCHFLAG(&this->actor),
|
||||
STRAY_FAIRY_AREA_CLOCK_TOWN, STRAY_FAIRY_TYPE_BUBBLE));
|
||||
if (childActor != NULL) {
|
||||
childActor->parent = &this->actor;
|
||||
}
|
||||
@@ -140,6 +141,7 @@ void EnElfbub_Idle(EnElfbub* this, PlayState* play) {
|
||||
|
||||
void EnElfbub_Update(Actor* thisx, PlayState* play) {
|
||||
EnElfbub* this = THIS;
|
||||
|
||||
Collider_UpdateCylinder(&this->actor, &this->collider);
|
||||
this->actionFunc(this, play);
|
||||
Actor_SetFocus(&this->actor, this->actor.shape.yOffset);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,29 +2,32 @@
|
||||
#define Z_EN_ELFGRP_H
|
||||
|
||||
#include "global.h"
|
||||
#include "overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.h"
|
||||
|
||||
struct EnElfgrp;
|
||||
|
||||
typedef void (*EnElfgrpActionFunc)(struct EnElfgrp*, PlayState*);
|
||||
|
||||
#define ENELFGRP_GET(thisx) ((thisx)->params & 0xF)
|
||||
#define ENELFGRP_GET_FE00(thisx) (((thisx)->params & 0xFE00) >> 9)
|
||||
#define ENELFGRP_GET_TYPE(thisx) ((thisx)->params & 0xF) //!< Same type as Great Fairies
|
||||
#define ENELFGRP_GET_SWITCHFLAG_PARAMS(thisx) (((thisx)->params & 0xFE00) >> 9)
|
||||
#define ENELFGRP_GET_SWITCHFLAG_ROT(thisx) ((thisx)->home.rot.z)
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ ENELFGRP_0,
|
||||
/* 2 */ ENELFGRP_1,
|
||||
/* 2 */ ENELFGRP_2,
|
||||
/* 3 */ ENELFGRP_3,
|
||||
/* 4 */ ENELFGRP_4
|
||||
} EnElfgrpParam;
|
||||
typedef enum ElfgrpType {
|
||||
/* 0 */ ENELFGRP_TYPE_MAGIC = GREAT_FAIRY_TYPE_MAGIC,
|
||||
/* 1 */ ENELFGRP_TYPE_POWER = GREAT_FAIRY_TYPE_POWER,
|
||||
/* 2 */ ENELFGRP_TYPE_WISDOM = GREAT_FAIRY_TYPE_WISDOM,
|
||||
/* 3 */ ENELFGRP_TYPE_COURAGE = GREAT_FAIRY_TYPE_COURAGE,
|
||||
/* 4 */ ENELFGRP_TYPE_KINDNESS = GREAT_FAIRY_TYPE_KINDNESS,
|
||||
/* 5 */ ENELFGRP_TYPE_MAX
|
||||
} ElfgrpType;
|
||||
|
||||
typedef struct EnElfgrp {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ s16 unk_144;
|
||||
/* 0x146 */ u8 unk_146;
|
||||
/* 0x147 */ u8 unk_147;
|
||||
/* 0x148 */ s8 unk_148;
|
||||
/* 0x14A */ u16 unk_14A;
|
||||
/* 0x144 */ s16 timer;
|
||||
/* 0x146 */ u8 talkedOnceFlag;
|
||||
/* 0x147 */ u8 type;
|
||||
/* 0x148 */ s8 unk_148; // set and not used
|
||||
/* 0x14A */ u16 stateFlags;
|
||||
/* 0x14C */ EnElfgrpActionFunc actionFunc;
|
||||
} EnElfgrp; // size = 0x150
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user