ovl_En_Knight OK (#1659)

* En_Knight matching

* Cleanup

* Fix

* Documentation Pass

* Suggested changes. Use IGOS_LIMB_* whenever it's guaranteed that the skeleton is gIgosSkel, still using KNIGHT_LIMB_* whenever it's ambiguous

* Remove related undefined syms

* More suggested changes

* BODYPART_NONE and bodypart enum

* Suggested changes

* Braces

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>

* csCamId

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>

* Various suggestions

* EnKnight_UpdateLimbCollider -> EnKnight_SetColliderSphere

* Yase/Debu -> Thin/Wide

* csCam -> subCam

* Format

* Fix

* animTranslation -> animMovement, dmgEffect -> drawDmgEff

* More brackets

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>

---------

Co-authored-by: Tom Overton <tom-overton@users.noreply.github.com>
This commit is contained in:
Tharo 2024-07-25 01:05:51 +01:00 committed by GitHub
parent d209ff5009
commit 1685597d9a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 5202 additions and 1054 deletions

View File

@ -8,59 +8,59 @@
under the assumption that Grezzo were probably the ones who added the qualifier to the names.
-->
<File Name="object_knight" Segment="6">
<Animation Name="object_knight_Anim_0005A8" Offset="0x5A8" /> <!-- Original name is probably "nsk_aramaD" -->
<Animation Name="object_knight_Anim_0009E0" Offset="0x9E0" /> <!-- Original name is probably "nsk_araraD" -->
<Animation Name="object_knight_Anim_000D9C" Offset="0xD9C" /> <!-- Original name is probably "nsk_back_damage" -->
<Animation Name="object_knight_Anim_001CDC" Offset="0x1CDC" /> <!-- Original name is probably "nsk_back_down" -->
<Animation Name="object_knight_Anim_002174" Offset="0x2174" /> <!-- Original name is probably "nsk_back_jump" -->
<Animation Name="object_knight_Anim_003008" Offset="0x3008" /> <!-- Original name is probably "nsk_bunri" -->
<Animation Name="object_knight_Anim_0031F0" Offset="0x31F0" /> <!-- Original name is probably "nsk_defend" -->
<Animation Name="object_knight_Anim_003650" Offset="0x3650" /> <!-- Original name is probably "nsk_fighting_run" -->
<Animation Name="object_knight_Anim_0040E0" Offset="0x40E0" /> <!-- Original name is probably "nsk_fighting_wait" -->
<Animation Name="object_knight_Anim_004620" Offset="0x4620" /> <!-- Original name is probably "nsk_fighting_walk" -->
<Animation Name="object_knight_Anim_004974" Offset="0x4974" /> <!-- Original name is probably "nsk_front_damage" -->
<Animation Name="object_knight_Anim_005D30" Offset="0x5D30" /> <!-- Original name is probably "nsk_front_down" -->
<Animation Name="object_knight_Anim_005E78" Offset="0x5E78" /> <!-- Original name is probably "nsk_furufuruD" -->
<Animation Name="object_knight_Anim_006754" Offset="0x6754" /> <!-- Original name is probably "nsk_gabaBD" -->
<Animation Name="object_knight_Anim_006EF8" Offset="0x6EF8" /> <!-- Original name is probably "nsk_gabaD" -->
<Animation Name="object_knight_Anim_0079D4" Offset="0x79D4" /> <!-- Original name is probably "nsk_gattai" -->
<Animation Name="object_knight_Anim_008390" Offset="0x8390" /> <!-- Original name is probably "nsk_goD" -->
<Animation Name="object_knight_Anim_008524" Offset="0x8524" /> <!-- Original name is probably "nsk_guardA" -->
<Animation Name="object_knight_Anim_0089E4" Offset="0x89E4" /> <!-- Original name is probably "nsk_guardB" -->
<Animation Name="object_knight_Anim_008D80" Offset="0x8D80" /> <!-- Original name is probably "nsk_haiteru" -->
<Animation Name="object_knight_Anim_009538" Offset="0x9538" /> <!-- Original name is probably "nsk_haku" -->
<Animation Name="object_knight_Anim_009D8C" Offset="0x9D8C" /> <!-- Original name is probably "nsk_jakinD" -->
<Animation Name="object_knight_Anim_00A530" Offset="0xA530" /> <!-- Original name is probably "nsk_jakinTOsekiD" -->
<Animation Name="object_knight_Anim_00A88C" Offset="0xA88C" /> <!-- Original name is probably "nsk_jidandaD" -->
<Animation Name="object_knight_Anim_00AB68" Offset="0xAB68" /> <!-- Original name is probably "nsk_jump" -->
<Animation Name="object_knight_Anim_00AFAC" Offset="0xAFAC" /> <!-- Original name is probably "nsk_jump_kiru" -->
<Animation Name="object_knight_Anim_00B5D4" Offset="0xB5D4" /> <!-- Original name is probably "nsk_jump_kiru_end" -->
<Animation Name="object_knight_Anim_00BCF4" Offset="0xBCF4" /> <!-- Original name is probably "nsk_koteL" -->
<Animation Name="object_knight_Anim_00C384" Offset="0xC384" /> <!-- Original name is probably "nsk_koteR" -->
<Animation Name="object_knight_Anim_00C7F0" Offset="0xC7F0" /> <!-- Original name is probably "nsk_kunekuneaD" -->
<Animation Name="object_knight_Anim_00CDE0" Offset="0xCDE0" /> <!-- Original name is probably "nsk_laugh" -->
<Animation Name="object_knight_Anim_00D870" Offset="0xD870" /> <!-- Original name is probably "nsk_laughD" -->
<Animation Name="object_knight_Anim_00DDCC" Offset="0xDDCC" /> <!-- Original name is probably "nsk_march" -->
<Animation Name="object_knight_Anim_00E15C" Offset="0xE15C" /> <!-- Original name is probably "nsk_modoru" -->
<Animation Name="object_knight_Anim_00E45C" Offset="0xE45C" /> <!-- Original name is probably "nsk_muzumuzuwalk" -->
<Animation Name="object_knight_Anim_00E7F4" Offset="0xE7F4" /> <!-- Original name is probably "nsk_nunuBD" -->
<Animation Name="object_knight_Anim_00EA90" Offset="0xEA90" /> <!-- Original name is probably "nsk_nunuD" -->
<Animation Name="object_knight_Anim_00EF44" Offset="0xEF44" /> <!-- Original name is probably "nsk_side_walk" -->
<Animation Name="object_knight_Anim_00F90C" Offset="0xF90C" /> <!-- Original name is probably "nsk_sonicgiri" -->
<Animation Name="object_knight_Anim_00FC78" Offset="0xFC78" /> <!-- Original name is probably "nsk_suwariwaitD" -->
<Animation Name="object_knight_Anim_01024C" Offset="0x1024C" /> <!-- Original name is probably "nsk_suwaru02D" -->
<Animation Name="object_knight_Anim_010E98" Offset="0x10E98" /> <!-- Original name is probably "nsk_suwaruD" -->
<Animation Name="object_knight_Anim_011298" Offset="0x11298" /> <!-- Original name is probably "nsk_tategiri" -->
<Animation Name="object_knight_Anim_011AAC" Offset="0x11AAC" /> <!-- Original name is probably "nsk_tategiri_kaburu" -->
<DList Name="object_knight_DL_012400" Offset="0x12400" />
<Animation Name="gKnightIgosCurtainReactionShockedAnim" Offset="0x5A8" /> <!-- Original name is probably "nsk_aramaD" -->
<Animation Name="gKnightIgosCurtainReactionAngryAnim" Offset="0x9E0" /> <!-- Original name is probably "nsk_araraD" -->
<Animation Name="gKnightDamagedBackAnim" Offset="0xD9C" /> <!-- Original name is probably "nsk_back_damage" -->
<Animation Name="gKnightFallBackwardsAnim" Offset="0x1CDC" /> <!-- Original name is probably "nsk_back_down" -->
<Animation Name="gKnightJumpBackAnim" Offset="0x2174" /> <!-- Original name is probably "nsk_back_jump" -->
<Animation Name="gKnightIgosRemoveHeadAnim" Offset="0x3008" /> <!-- Original name is probably "nsk_bunri" -->
<Animation Name="gKnightFastBlockStandingAnim" Offset="0x31F0" /> <!-- Original name is probably "nsk_defend" -->
<Animation Name="gKnightFastWalkShieldingAnim" Offset="0x3650" /> <!-- Original name is probably "nsk_fighting_run" -->
<Animation Name="gKnightIdleAnim" Offset="0x40E0" /> <!-- Original name is probably "nsk_fighting_wait" -->
<Animation Name="gKnightSlowWalkShieldingAnim" Offset="0x4620" /> <!-- Original name is probably "nsk_fighting_walk" -->
<Animation Name="gKnightDamagedFrontAnim" Offset="0x4974" /> <!-- Original name is probably "nsk_front_damage" -->
<Animation Name="gKnightFallForwardsAnim" Offset="0x5D30" /> <!-- Original name is probably "nsk_front_down" -->
<Animation Name="gKnightIgosShrugAnim" Offset="0x5E78" /> <!-- Original name is probably "nsk_furufuruD" -->
<Animation Name="gKnightCaptainsHatCSIgosShockedStandingAnim" Offset="0x6754" /> <!-- Original name is probably "nsk_gabaBD" -->
<Animation Name="gKnightCaptainsHatCSIgosShockedSittingAnim" Offset="0x6EF8" /> <!-- Original name is probably "nsk_gabaD" -->
<Animation Name="gKnightIgosPutHeadBackOnAnim" Offset="0x79D4" /> <!-- Original name is probably "nsk_gattai" -->
<Animation Name="gKnightIgosLaughAnim" Offset="0x8390" /> <!-- Original name is probably "nsk_goD" -->
<Animation Name="gKnightFastBlockSittingAnim" Offset="0x8524" /> <!-- Original name is probably "nsk_guardA" -->
<Animation Name="gKnightEndBlockAndSitAnim" Offset="0x89E4" /> <!-- Original name is probably "nsk_guardB" -->
<Animation Name="gKnightIgosBreathAttackAnim" Offset="0x8D80" /> <!-- Original name is probably "nsk_haiteru" -->
<Animation Name="gKnightIgosBreathAttackStartAnim" Offset="0x9538" /> <!-- Original name is probably "nsk_haku" -->
<Animation Name="gKnightIgosStandAndDrawAnim" Offset="0x9D8C" /> <!-- Original name is probably "nsk_jakinD" -->
<Animation Name="gKnightIgosSitDownAnim" Offset="0xA530" /> <!-- Original name is probably "nsk_jakinTOsekiD" -->
<Animation Name="gKnightCaptainsHatCSIgosSteppingAnim" Offset="0xA88C" /> <!-- Original name is probably "nsk_jidandaD" -->
<Animation Name="gKnightJumpAnim" Offset="0xAB68" /> <!-- Original name is probably "nsk_jump" -->
<Animation Name="gKnightJumpAttackBeginAnim" Offset="0xAFAC" /> <!-- Original name is probably "nsk_jump_kiru" -->
<Animation Name="gKnightJumpAttackEndAnim" Offset="0xB5D4" /> <!-- Original name is probably "nsk_jump_kiru_end" -->
<Animation Name="gKnightLeftSwingAnim" Offset="0xBCF4" /> <!-- Original name is probably "nsk_koteL" -->
<Animation Name="gKnightRightSwingAnim" Offset="0xC384" /> <!-- Original name is probably "nsk_koteR" -->
<Animation Name="gKnightCaptainsHatCSIgosShockedAnim" Offset="0xC7F0" /> <!-- Original name is probably "nsk_kunekuneaD" -->
<Animation Name="gKnightLaugh1Anim" Offset="0xCDE0" /> <!-- Original name is probably "nsk_laugh" -->
<Animation Name="gKnightLaugh2Anim" Offset="0xD870" /> <!-- Original name is probably "nsk_laughD" -->
<Animation Name="gKnightMarchAnim" Offset="0xDDCC" /> <!-- Original name is probably "nsk_march" -->
<Animation Name="gKnightIgosBreathAttackStopAnim" Offset="0xE15C" /> <!-- Original name is probably "nsk_modoru" -->
<Animation Name="gKnightStruckByLightRayAnim" Offset="0xE45C" /> <!-- Original name is probably "nsk_muzumuzuwalk" -->
<Animation Name="gKnightCaptainsHatCSBeginStandingAnim" Offset="0xE7F4" /> <!-- Original name is probably "nsk_nunuBD" -->
<Animation Name="gKnightCaptainsHatCSBeginSittingAnim" Offset="0xEA90" /> <!-- Original name is probably "nsk_nunuD" -->
<Animation Name="gKnightStrafeAnim" Offset="0xEF44" /> <!-- Original name is probably "nsk_side_walk" -->
<Animation Name="gKnightUppercutAnim" Offset="0xF90C" /> <!-- Original name is probably "nsk_sonicgiri" -->
<Animation Name="gKnightIgosSittingAnim" Offset="0xFC78" /> <!-- Original name is probably "nsk_suwariwaitD" -->
<Animation Name="gKnightCaptainsHatCSSitBackDownAnim" Offset="0x1024C" /> <!-- Original name is probably "nsk_suwaru02D" -->
<Animation Name="gKnightIntroSitDownAnim" Offset="0x10E98" /> <!-- Original name is probably "nsk_suwaruD" -->
<Animation Name="gKnightHeavyAttackAnim" Offset="0x11298" /> <!-- Original name is probably "nsk_tategiri" -->
<Animation Name="gKnightBeginTelegraphHeavyAttackAnim" Offset="0x11AAC" /> <!-- Original name is probably "nsk_tategiri_kaburu" -->
<DList Name="gKnightWideHeadDL" Offset="0x12400" />
<Texture Name="object_knight_Tex_012760" OutName="tex_012760" Format="rgba16" Width="16" Height="16" Offset="0x12760" />
<Texture Name="object_knight_Tex_012960" OutName="tex_012960" Format="rgba16" Width="16" Height="16" Offset="0x12960" />
<Texture Name="object_knight_Tex_012B60" OutName="tex_012B60" Format="rgba16" Width="8" Height="8" Offset="0x12B60" />
<Texture Name="object_knight_Tex_012BE0" OutName="tex_012BE0" Format="ia16" Width="8" Height="8" Offset="0x12BE0" />
<DList Name="object_knight_DL_012DB0" Offset="0x12DB0" />
<DList Name="gKnightWideJawDL" Offset="0x12DB0" />
<Texture Name="object_knight_Tex_012EC0" OutName="tex_012EC0" Format="rgba16" Width="8" Height="16" Offset="0x12EC0" />
<Texture Name="object_knight_Tex_012FC0" OutName="tex_012FC0" Format="rgba16" Width="4" Height="4" Offset="0x12FC0" />
<DList Name="object_knight_DL_013020" Offset="0x13020" />
<DList Name="gKnightWideNeckDL" Offset="0x13020" />
<DList Name="object_knight_DL_0153E0" Offset="0x153E0" />
<DList Name="object_knight_DL_0154B0" Offset="0x154B0" />
<DList Name="object_knight_DL_0155A0" Offset="0x155A0" />
@ -102,23 +102,23 @@
<Texture Name="object_knight_Tex_017FD8" OutName="tex_017FD8" Format="ia8" Width="8" Height="8" Offset="0x17FD8" />
<Texture Name="object_knight_Tex_018018" OutName="tex_018018" Format="i4" Width="16" Height="16" Offset="0x18018" />
<Texture Name="object_knight_Tex_018098" OutName="tex_018098" Format="i8" Width="64" Height="32" Offset="0x18098" />
<DList Name="object_knight_DL_0188F8" Offset="0x188F8" />
<DList Name="object_knight_DL_0189F0" Offset="0x189F0" />
<DList Name="object_knight_DL_018AF0" Offset="0x18AF0" />
<TextureAnimation Name="object_knight_Matanimheader_018BC4" Offset="0x18BC4" />
<Array Name="object_knight_Vtx_018BD0" Count="18" Offset="0x18BD0">
<DList Name="gKnightBlureState2DL" Offset="0x188F8" />
<DList Name="gKnightBlureState1DL" Offset="0x189F0" />
<DList Name="gKnightBlureState0DL" Offset="0x18AF0" />
<TextureAnimation Name="gKnightBlureTexAnim" Offset="0x18BC4" />
<Array Name="gIkanaThroneRoomLightRayVtx" Count="18" Offset="0x18BD0">
<Vtx/>
</Array>
<DList Name="object_knight_DL_018CF0" Offset="0x18CF0" /> <!-- Original name is "w2_hikari_naname_modelT" -->
<DList Name="object_knight_DL_018DE0" Offset="0x18DE0" /> <!-- Original name is "w2_hikari_naname2_modelT" -->
<DList Name="gIkanaThroneRoomLightRayDL" Offset="0x18CF0" /> <!-- Original name is "w2_hikari_naname_modelT" -->
<DList Name="gIkanaThroneRoomLightOnFloorDL" Offset="0x18DE0" /> <!-- Original name is "w2_hikari_naname2_modelT" -->
<DList Name="object_knight_DL_018E50" Offset="0x18E50" />
<Texture Name="object_knight_Tex_018E58" OutName="tex_018E58" Format="ia8" Width="16" Height="16" Offset="0x18E58" />
<Texture Name="object_knight_Tex_018F58" OutName="tex_018F58" Format="ia16" Width="16" Height="32" Offset="0x18F58" />
<TextureAnimation Name="object_knight_Matanimheader_019360" Offset="0x19360" />
<TextureAnimation Name="gIkanaThroneRoomLightRayTexAnim" Offset="0x19360" />
<DList Name="object_knight_DL_0193A8" Offset="0x193A8" />
<DList Name="object_knight_DL_0193B0" Offset="0x193B0" /> <!-- Original name is "w2_ikn_katen_model" -->
<Texture Name="object_knight_Tex_019470" OutName="tex_019470" Format="rgba16" Width="4" Height="4" Offset="0x19470" />
<Texture Name="object_knight_Tex_019490" OutName="tex_019490" Format="i8" Width="32" Height="64" Offset="0x19490" />
<DList Name="gIkanaThroneRoomCurtainDL" Offset="0x193B0" /> <!-- Original name is "w2_ikn_katen_model" -->
<Texture Name="object_knight_TLUT_019470" OutName="tex_019470" Format="rgba16" Width="4" Height="4" Offset="0x19470" />
<Texture Name="gIkanaThroneRoomCurtainTex" OutName="ikana_throne_room_curtain" Format="ci4" Width="64" Height="64" Offset="0x19490" TlutOffset="0x19470" />
<DList Name="object_knight_DL_01D380" Offset="0x1D380" />
<DList Name="object_knight_DL_01D4C0" Offset="0x1D4C0" />
<DList Name="object_knight_DL_01D650" Offset="0x1D650" />
@ -151,69 +151,69 @@
<Texture Name="object_knight_Tex_01FBE8" OutName="tex_01FBE8" Format="ia8" Width="16" Height="16" Offset="0x1FBE8" />
<Texture Name="object_knight_Tex_01FCE8" OutName="tex_01FCE8" Format="rgba16" Width="8" Height="16" Offset="0x1FCE8" />
<Texture Name="object_knight_Tex_01FDE8" OutName="tex_01FDE8" Format="rgba16" Width="16" Height="16" Offset="0x1FDE8" />
<Limb Name="object_knight_Standardlimb_01FFE8" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_01" Offset="0x1FFE8" />
<Limb Name="object_knight_Standardlimb_01FFF4" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_02" Offset="0x1FFF4" />
<Limb Name="object_knight_Standardlimb_020000" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_03" Offset="0x20000" />
<Limb Name="object_knight_Standardlimb_02000C" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_04" Offset="0x2000C" />
<Limb Name="object_knight_Standardlimb_020018" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_05" Offset="0x20018" />
<Limb Name="object_knight_Standardlimb_020024" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_06" Offset="0x20024" />
<Limb Name="object_knight_Standardlimb_020030" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_07" Offset="0x20030" />
<Limb Name="object_knight_Standardlimb_02003C" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_08" Offset="0x2003C" />
<Limb Name="object_knight_Standardlimb_020048" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_09" Offset="0x20048" />
<Limb Name="object_knight_Standardlimb_020054" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0A" Offset="0x20054" />
<Limb Name="object_knight_Standardlimb_020060" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0B" Offset="0x20060" />
<Limb Name="object_knight_Standardlimb_02006C" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0C" Offset="0x2006C" />
<Limb Name="object_knight_Standardlimb_020078" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0D" Offset="0x20078" />
<Limb Name="object_knight_Standardlimb_020084" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0E" Offset="0x20084" />
<Limb Name="object_knight_Standardlimb_020090" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0F" Offset="0x20090" />
<Limb Name="object_knight_Standardlimb_02009C" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_10" Offset="0x2009C" />
<Limb Name="object_knight_Standardlimb_0200A8" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_11" Offset="0x200A8" />
<Limb Name="object_knight_Standardlimb_0200B4" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_12" Offset="0x200B4" />
<Limb Name="object_knight_Standardlimb_0200C0" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_13" Offset="0x200C0" />
<Limb Name="object_knight_Standardlimb_0200CC" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_14" Offset="0x200CC" />
<Limb Name="object_knight_Standardlimb_0200D8" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_15" Offset="0x200D8" />
<Limb Name="object_knight_Standardlimb_0200E4" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_16" Offset="0x200E4" />
<Limb Name="object_knight_Standardlimb_0200F0" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_17" Offset="0x200F0" />
<Limb Name="object_knight_Standardlimb_0200FC" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_18" Offset="0x200FC" />
<Limb Name="object_knight_Standardlimb_020108" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_19" Offset="0x20108" />
<Limb Name="object_knight_Standardlimb_020114" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_1A" Offset="0x20114" />
<Limb Name="object_knight_Standardlimb_020120" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_1B" Offset="0x20120" />
<Limb Name="object_knight_Standardlimb_02012C" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_1C" Offset="0x2012C" />
<Skeleton Name="object_knight_Skel_0201A8" Type="Flex" LimbType="Standard" LimbNone="OBJECT_KNIGHT_1_LIMB_NONE" LimbMax="OBJECT_KNIGHT_1_LIMB_MAX" EnumName="ObjectKnight1Limb" Offset="0x201A8" />
<Limb Name="object_knight_Standardlimb_0201B4" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_01" Offset="0x201B4" />
<Limb Name="object_knight_Standardlimb_0201C0" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_02" Offset="0x201C0" />
<Limb Name="object_knight_Standardlimb_0201CC" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_03" Offset="0x201CC" />
<Limb Name="object_knight_Standardlimb_0201D8" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_04" Offset="0x201D8" />
<Limb Name="object_knight_Standardlimb_0201E4" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_05" Offset="0x201E4" />
<Limb Name="object_knight_Standardlimb_0201F0" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_06" Offset="0x201F0" />
<Limb Name="object_knight_Standardlimb_0201FC" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_07" Offset="0x201FC" />
<Limb Name="object_knight_Standardlimb_020208" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_08" Offset="0x20208" />
<Limb Name="object_knight_Standardlimb_020214" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_09" Offset="0x20214" />
<Limb Name="object_knight_Standardlimb_020220" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0A" Offset="0x20220" />
<Limb Name="object_knight_Standardlimb_02022C" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0B" Offset="0x2022C" />
<Limb Name="object_knight_Standardlimb_020238" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0C" Offset="0x20238" />
<Limb Name="object_knight_Standardlimb_020244" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0D" Offset="0x20244" />
<Limb Name="object_knight_Standardlimb_020250" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0E" Offset="0x20250" />
<Limb Name="object_knight_Standardlimb_02025C" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0F" Offset="0x2025C" />
<Limb Name="object_knight_Standardlimb_020268" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_10" Offset="0x20268" />
<Limb Name="object_knight_Standardlimb_020274" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_11" Offset="0x20274" />
<Limb Name="object_knight_Standardlimb_020280" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_12" Offset="0x20280" />
<Limb Name="object_knight_Standardlimb_02028C" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_13" Offset="0x2028C" />
<Limb Name="object_knight_Standardlimb_020298" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_14" Offset="0x20298" />
<Limb Name="object_knight_Standardlimb_0202A4" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_15" Offset="0x202A4" />
<Limb Name="object_knight_Standardlimb_0202B0" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_16" Offset="0x202B0" />
<Limb Name="object_knight_Standardlimb_0202BC" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_17" Offset="0x202BC" />
<Limb Name="object_knight_Standardlimb_0202C8" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_18" Offset="0x202C8" />
<Limb Name="object_knight_Standardlimb_0202D4" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_19" Offset="0x202D4" />
<Limb Name="object_knight_Standardlimb_0202E0" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_1A" Offset="0x202E0" />
<Limb Name="object_knight_Standardlimb_0202EC" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_1B" Offset="0x202EC" />
<Limb Name="object_knight_Standardlimb_0202F8" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_1C" Offset="0x202F8" />
<Skeleton Name="object_knight_Skel_020374" Type="Flex" LimbType="Standard" LimbNone="OBJECT_KNIGHT_2_LIMB_NONE" LimbMax="OBJECT_KNIGHT_2_LIMB_MAX" EnumName="ObjectKnight2Limb" Offset="0x20374" />
<Animation Name="object_knight_Anim_020950" Offset="0x20950" /> <!-- Original name is probably "nsk_tategiri_tame" -->
<Animation Name="object_knight_Anim_02105C" Offset="0x2105C" /> <!-- Original name is probably "nsk_towaitBD" -->
<Animation Name="object_knight_Anim_021B10" Offset="0x21B10" /> <!-- Original name is probably "nsk_walkD" -->
<Animation Name="object_knight_Anim_021E34" Offset="0x21E34" /> <!-- Original name is probably "nsk_whyD" -->
<Animation Name="object_knight_Anim_022728" Offset="0x22728" /> <!-- Original name is probably "nsk_yokogiri" -->
<Animation Name="object_knight_Anim_022CAC" Offset="0x22CAC" /> <!-- Original name is probably "nsk_yokogiri_kime" -->
<Limb Name="object_knight_Standardlimb_01FFE8" Type="Standard" EnumName="IGOS_LIMB_ROOT" Offset="0x1FFE8" />
<Limb Name="object_knight_Standardlimb_01FFF4" Type="Standard" EnumName="IGOS_LIMB_SPINE_BASE" Offset="0x1FFF4" />
<Limb Name="object_knight_Standardlimb_020000" Type="Standard" EnumName="IGOS_LIMB_SPINE_UPPER" Offset="0x20000" />
<Limb Name="object_knight_Standardlimb_02000C" Type="Standard" EnumName="IGOS_LIMB_LEFT_UPPER_ARM" Offset="0x2000C" />
<Limb Name="object_knight_Standardlimb_020018" Type="Standard" EnumName="IGOS_LIMB_LEFT_FOREARM" Offset="0x20018" />
<Limb Name="object_knight_Standardlimb_020024" Type="Standard" EnumName="IGOS_LIMB_SHIELD" Offset="0x20024" />
<Limb Name="object_knight_Standardlimb_020030" Type="Standard" EnumName="IGOS_LIMB_LEFT_HAND" Offset="0x20030" />
<Limb Name="object_knight_Standardlimb_02003C" Type="Standard" EnumName="IGOS_LIMB_LEFT_SHOULDER" Offset="0x2003C" />
<Limb Name="object_knight_Standardlimb_020048" Type="Standard" EnumName="IGOS_LIMB_RIGHT_UPPER_ARM" Offset="0x20048" />
<Limb Name="object_knight_Standardlimb_020054" Type="Standard" EnumName="IGOS_LIMB_RIGHT_FOREARM" Offset="0x20054" />
<Limb Name="object_knight_Standardlimb_020060" Type="Standard" EnumName="IGOS_LIMB_SWORD" Offset="0x20060" />
<Limb Name="object_knight_Standardlimb_02006C" Type="Standard" EnumName="IGOS_LIMB_RIGHT_HAND" Offset="0x2006C" />
<Limb Name="object_knight_Standardlimb_020078" Type="Standard" EnumName="IGOS_LIMB_RIGHT_SHOULDER" Offset="0x20078" />
<Limb Name="object_knight_Standardlimb_020084" Type="Standard" EnumName="IGOS_LIMB_COLLAR" Offset="0x20084" />
<Limb Name="object_knight_Standardlimb_020090" Type="Standard" EnumName="IGOS_LIMB_NECK" Offset="0x20090" />
<Limb Name="object_knight_Standardlimb_02009C" Type="Standard" EnumName="IGOS_LIMB_10" Offset="0x2009C" />
<Limb Name="object_knight_Standardlimb_0200A8" Type="Standard" EnumName="IGOS_LIMB_11" Offset="0x200A8" />
<Limb Name="object_knight_Standardlimb_0200B4" Type="Standard" EnumName="IGOS_LIMB_JAW" Offset="0x200B4" />
<Limb Name="object_knight_Standardlimb_0200C0" Type="Standard" EnumName="IGOS_LIMB_HEAD" Offset="0x200C0" />
<Limb Name="object_knight_Standardlimb_0200CC" Type="Standard" EnumName="IGOS_LIMB_TORSO" Offset="0x200CC" />
<Limb Name="object_knight_Standardlimb_0200D8" Type="Standard" EnumName="IGOS_LIMB_PELVIS" Offset="0x200D8" />
<Limb Name="object_knight_Standardlimb_0200E4" Type="Standard" EnumName="IGOS_LIMB_16" Offset="0x200E4" />
<Limb Name="object_knight_Standardlimb_0200F0" Type="Standard" EnumName="IGOS_LIMB_LEFT_LEG_UPPER" Offset="0x200F0" />
<Limb Name="object_knight_Standardlimb_0200FC" Type="Standard" EnumName="IGOS_LIMB_LEFT_LEG_LOWER" Offset="0x200FC" />
<Limb Name="object_knight_Standardlimb_020108" Type="Standard" EnumName="IGOS_LIMB_LEFT_FOOT" Offset="0x20108" />
<Limb Name="object_knight_Standardlimb_020114" Type="Standard" EnumName="IGOS_LIMB_RIGHT_LEG_UPPER" Offset="0x20114" />
<Limb Name="object_knight_Standardlimb_020120" Type="Standard" EnumName="IGOS_LIMB_RIGHT_LEG_LOWER" Offset="0x20120" />
<Limb Name="object_knight_Standardlimb_02012C" Type="Standard" EnumName="IGOS_LIMB_RIGHT_FOOT" Offset="0x2012C" />
<Skeleton Name="gIgosSkel" Type="Flex" LimbType="Standard" LimbNone="IGOS_LIMB_NONE" LimbMax="IGOS_LIMB_MAX" EnumName="IgosLimb" Offset="0x201A8" />
<Limb Name="object_knight_Standardlimb_0201B4" Type="Standard" EnumName="KNIGHT_LIMB_ROOT" Offset="0x201B4" />
<Limb Name="object_knight_Standardlimb_0201C0" Type="Standard" EnumName="KNIGHT_LIMB_SPINE_BASE" Offset="0x201C0" />
<Limb Name="object_knight_Standardlimb_0201CC" Type="Standard" EnumName="KNIGHT_LIMB_SPINE_UPPER" Offset="0x201CC" />
<Limb Name="object_knight_Standardlimb_0201D8" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_UPPER_ARM" Offset="0x201D8" />
<Limb Name="object_knight_Standardlimb_0201E4" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_FOREARM" Offset="0x201E4" />
<Limb Name="object_knight_Standardlimb_0201F0" Type="Standard" EnumName="KNIGHT_LIMB_SHIELD" Offset="0x201F0" />
<Limb Name="object_knight_Standardlimb_0201FC" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_HAND" Offset="0x201FC" />
<Limb Name="object_knight_Standardlimb_020208" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_SHOULDER" Offset="0x20208" />
<Limb Name="object_knight_Standardlimb_020214" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_UPPER_ARM" Offset="0x20214" />
<Limb Name="object_knight_Standardlimb_020220" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_FOREARM" Offset="0x20220" />
<Limb Name="object_knight_Standardlimb_02022C" Type="Standard" EnumName="KNIGHT_LIMB_SWORD" Offset="0x2022C" />
<Limb Name="object_knight_Standardlimb_020238" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_HAND" Offset="0x20238" />
<Limb Name="object_knight_Standardlimb_020244" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_SHOULDER" Offset="0x20244" />
<Limb Name="object_knight_Standardlimb_020250" Type="Standard" EnumName="KNIGHT_LIMB_COLLAR" Offset="0x20250" />
<Limb Name="object_knight_Standardlimb_02025C" Type="Standard" EnumName="KNIGHT_LIMB_NECK" Offset="0x2025C" />
<Limb Name="object_knight_Standardlimb_020268" Type="Standard" EnumName="KNIGHT_LIMB_10" Offset="0x20268" />
<Limb Name="object_knight_Standardlimb_020274" Type="Standard" EnumName="KNIGHT_LIMB_11" Offset="0x20274" />
<Limb Name="object_knight_Standardlimb_020280" Type="Standard" EnumName="KNIGHT_LIMB_JAW" Offset="0x20280" />
<Limb Name="object_knight_Standardlimb_02028C" Type="Standard" EnumName="KNIGHT_LIMB_HEAD" Offset="0x2028C" />
<Limb Name="object_knight_Standardlimb_020298" Type="Standard" EnumName="KNIGHT_LIMB_TORSO" Offset="0x20298" />
<Limb Name="object_knight_Standardlimb_0202A4" Type="Standard" EnumName="KNIGHT_LIMB_PELVIS" Offset="0x202A4" />
<Limb Name="object_knight_Standardlimb_0202B0" Type="Standard" EnumName="KNIGHT_LIMB_16" Offset="0x202B0" />
<Limb Name="object_knight_Standardlimb_0202BC" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_LEG_UPPER" Offset="0x202BC" />
<Limb Name="object_knight_Standardlimb_0202C8" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_LEG_LOWER" Offset="0x202C8" />
<Limb Name="object_knight_Standardlimb_0202D4" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_FOOT" Offset="0x202D4" />
<Limb Name="object_knight_Standardlimb_0202E0" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_LEG_UPPER" Offset="0x202E0" />
<Limb Name="object_knight_Standardlimb_0202EC" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_LEG_LOWER" Offset="0x202EC" />
<Limb Name="object_knight_Standardlimb_0202F8" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_FOOT" Offset="0x202F8" />
<Skeleton Name="gKnightSkel" Type="Flex" LimbType="Standard" LimbNone="KNIGHT_LIMB_NONE" LimbMax="KNIGHT_LIMB_MAX" EnumName="KnightLimb" Offset="0x20374" />
<Animation Name="gKnightTelegraphHeavyAttackAnim" Offset="0x20950" /> <!-- Original name is probably "nsk_tategiri_tame" -->
<Animation Name="gKnightIgosShrugStopAnim" Offset="0x2105C" /> <!-- Original name is probably "nsk_towaitBD" -->
<Animation Name="gKnightIntroWalkAnim" Offset="0x21B10" /> <!-- Original name is probably "nsk_walkD" -->
<Animation Name="gKnightIgosShrugStartAnim" Offset="0x21E34" /> <!-- Original name is probably "nsk_whyD" -->
<Animation Name="gKnightLowSwingAnim" Offset="0x22728" /> <!-- Original name is probably "nsk_yokogiri" -->
<Animation Name="gKnightLowSwingEndAnim" Offset="0x22CAC" /> <!-- Original name is probably "nsk_yokogiri_kime" -->
</File>
</Root>

View File

@ -75,7 +75,7 @@ extern AudioContext gAudioCtx; // at 0x80200C70
// other segments
extern Mtx D_01000000;
extern Gfx D_08000000[];
extern u16 D_0F000000[];
#endif

View File

@ -148,8 +148,6 @@ D_01000000 = 0x01000000;
D_04023348 = 0x04023348;
D_040233B8 = 0x040233B8;
D_04023428 = 0x04023428;
D_04051180 = 0x04051180;
D_04051238 = 0x04051238;
D_0406AB30 = 0x0406AB30;
// segment 0x05
@ -232,65 +230,6 @@ D_06004894 = 0x06004894;
D_060086BC = 0x060086BC;
D_0600C3E0 = 0x0600C3E0;
// ovl_En_Knight
D_060005A8 = 0x060005A8;
D_060009E0 = 0x060009E0;
D_06000D9C = 0x06000D9C;
D_06001CDC = 0x06001CDC;
D_06002174 = 0x06002174;
D_06003008 = 0x06003008;
D_060031F0 = 0x060031F0;
D_06003650 = 0x06003650;
D_060040E0 = 0x060040E0;
D_06004620 = 0x06004620;
D_06004974 = 0x06004974;
D_06005D30 = 0x06005D30;
D_06005E78 = 0x06005E78;
D_06006754 = 0x06006754;
D_06006EF8 = 0x06006EF8;
D_060079D4 = 0x060079D4;
D_06008390 = 0x06008390;
D_06008524 = 0x06008524;
D_060089E4 = 0x060089E4;
D_06008D80 = 0x06008D80;
D_06009538 = 0x06009538;
D_06009D8C = 0x06009D8C;
D_0600A530 = 0x0600A530;
D_0600A88C = 0x0600A88C;
D_0600AFAC = 0x0600AFAC;
D_0600B5D4 = 0x0600B5D4;
D_0600BCF4 = 0x0600BCF4;
D_0600C384 = 0x0600C384;
D_0600C7F0 = 0x0600C7F0;
D_0600CDE0 = 0x0600CDE0;
D_0600D870 = 0x0600D870;
D_0600DDCC = 0x0600DDCC;
D_0600E15C = 0x0600E15C;
D_0600E45C = 0x0600E45C;
D_0600E7F4 = 0x0600E7F4;
D_0600EA90 = 0x0600EA90;
D_0600EF44 = 0x0600EF44;
D_0600FC78 = 0x0600FC78;
D_0601024C = 0x0601024C;
D_06010E98 = 0x06010E98;
D_06011298 = 0x06011298;
D_06012400 = 0x06012400;
D_06012DB0 = 0x06012DB0;
D_06013020 = 0x06013020;
D_060188F8 = 0x060188F8;
D_060189F0 = 0x060189F0;
D_06018AF0 = 0x06018AF0;
D_06018BC4 = 0x06018BC4;
D_060201A8 = 0x060201A8;
D_06020374 = 0x06020374;
D_06020950 = 0x06020950;
D_0602105C = 0x0602105C;
D_06021B10 = 0x06021B10;
D_06021E34 = 0x06021E34;
D_06022728 = 0x06022728;
D_06022CAC = 0x06022CAC;
// ovl_En_Zl4
D_06013328 = 0x06013328;

4
spec
View File

@ -2187,9 +2187,7 @@ beginseg
name "ovl_En_Knight"
compress
include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Knight/z_en_knight.o"
include "$(BUILD_DIR)/data/ovl_En_Knight/ovl_En_Knight.data.o"
include "$(BUILD_DIR)/data/ovl_En_Knight/ovl_En_Knight.bss.o"
include "$(BUILD_DIR)/data/ovl_En_Knight/ovl_En_Knight.reloc.o"
include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Knight/ovl_En_Knight_reloc.o"
endseg
beginseg

View File

@ -20,54 +20,62 @@ void Boss06_Destroy(Actor* thisx, PlayState* play);
void Boss06_Update(Actor* thisx, PlayState* play);
void Boss06_Draw(Actor* thisx, PlayState* play2);
void func_809F24A8(Boss06* this);
void func_809F24C8(Boss06* this, PlayState* play);
void func_809F2B64(Boss06* this, PlayState* play);
void func_809F2C44(Boss06* this, PlayState* play);
void func_809F2E14(Boss06* this, PlayState* play);
void func_809F2E34(Boss06* this, PlayState* play);
void func_809F2ED0(Boss06* this, PlayState* play);
void func_809F2EE8(Boss06* this, PlayState* play);
void Boss06_SetupCurtainBurningCutscene(Boss06* this);
void Boss06_CurtainBurningCutscene(Boss06* this, PlayState* play);
void Boss06_SetupCloseCurtain(Boss06* this, PlayState* play);
void Boss06_CloseCurtain(Boss06* this, PlayState* play);
void Boss06_SetupCurtainClosed(Boss06* this, PlayState* play);
void Boss06_CurtainClosed(Boss06* this, PlayState* play);
void Boss06_SetupCurtainDestroyed(Boss06* this, PlayState* play);
void Boss06_CurtainDestroyed(Boss06* this, PlayState* play);
Vec3f D_809F4370[128];
EnKnight* D_809F4970;
s32 D_809F4974;
s32 D_809F4978;
s32 D_809F497C;
Vec3f sCurtainFireEffectPositions[128];
static EnKnight* sIgosInstance;
s32 sBoss06Seed1;
s32 sBoss06Seed2;
s32 sBoss06Seed3;
typedef enum {
/* 0 */ BOSS06_DMGEFF_0 = 0,
/* 2 */ BOSS06_DMGEFF_FIRE_ARROW = 2,
/* 3 */ BOSS06_DMGEFF_ICE_ARROW,
/* 4 */ BOSS06_DMGEFF_LIGHT_ARROW,
/* 15 */ BOSS06_DMGEFF_F = 15
} Boss06DamageEffect;
static DamageTable sDamageTable = {
/* Deku Nut */ DMG_ENTRY(0, 0xF),
/* Deku Stick */ DMG_ENTRY(0, 0xF),
/* Horse trample */ DMG_ENTRY(0, 0x0),
/* Explosives */ DMG_ENTRY(1, 0xF),
/* Zora boomerang */ DMG_ENTRY(0, 0xF),
/* Normal arrow */ DMG_ENTRY(0, 0xF),
/* UNK_DMG_0x06 */ DMG_ENTRY(0, 0x0),
/* Hookshot */ DMG_ENTRY(0, 0xF),
/* Goron punch */ DMG_ENTRY(0, 0xF),
/* Sword */ DMG_ENTRY(0, 0xF),
/* Goron pound */ DMG_ENTRY(0, 0xF),
/* Fire arrow */ DMG_ENTRY(1, 0x2),
/* Ice arrow */ DMG_ENTRY(0, 0x3),
/* Light arrow */ DMG_ENTRY(0, 0x4),
/* Goron spikes */ DMG_ENTRY(0, 0xF),
/* Deku spin */ DMG_ENTRY(0, 0xF),
/* Deku bubble */ DMG_ENTRY(0, 0xF),
/* Deku launch */ DMG_ENTRY(0, 0xF),
/* UNK_DMG_0x12 */ DMG_ENTRY(0, 0xF),
/* Zora barrier */ DMG_ENTRY(0, 0x0),
/* Normal shield */ DMG_ENTRY(0, 0xF),
/* Light ray */ DMG_ENTRY(0, 0xF),
/* Thrown object */ DMG_ENTRY(0, 0xF),
/* Zora punch */ DMG_ENTRY(0, 0xF),
/* Spin attack */ DMG_ENTRY(0, 0xF),
/* Sword beam */ DMG_ENTRY(0, 0x0),
/* Normal Roll */ DMG_ENTRY(0, 0xF),
/* UNK_DMG_0x1B */ DMG_ENTRY(0, 0x0),
/* UNK_DMG_0x1C */ DMG_ENTRY(0, 0x0),
/* Unblockable */ DMG_ENTRY(0, 0x0),
/* UNK_DMG_0x1E */ DMG_ENTRY(0, 0x0),
/* Powder Keg */ DMG_ENTRY(0, 0xF),
/* Deku Nut */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Deku Stick */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Horse trample */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Explosives */ DMG_ENTRY(1, BOSS06_DMGEFF_F),
/* Zora boomerang */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Normal arrow */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* UNK_DMG_0x06 */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Hookshot */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Goron punch */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Sword */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Goron pound */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Fire arrow */ DMG_ENTRY(1, BOSS06_DMGEFF_FIRE_ARROW),
/* Ice arrow */ DMG_ENTRY(0, BOSS06_DMGEFF_ICE_ARROW),
/* Light arrow */ DMG_ENTRY(0, BOSS06_DMGEFF_LIGHT_ARROW),
/* Goron spikes */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Deku spin */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Deku bubble */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Deku launch */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* UNK_DMG_0x12 */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Zora barrier */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Normal shield */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Light ray */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Thrown object */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Zora punch */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Spin attack */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Sword beam */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Normal Roll */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* UNK_DMG_0x1B */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* UNK_DMG_0x1C */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Unblockable */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* UNK_DMG_0x1E */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Powder Keg */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
};
ActorInit Boss_06_InitVars = {
@ -102,54 +110,63 @@ static ColliderCylinderInit sCylinderInit = {
{ 90, 140, 10, { 0, 0, 0 } },
};
Vec3f D_809F40EC[] = {
static Vec3f sCurtainLocations[] = {
{ 1081.0f, 235.0f, 3224.0f },
{ 676.0f, 235.0f, 3224.0f },
};
void func_809F2120(s32 arg0, s32 arg1, s32 arg2) {
D_809F4974 = arg0;
D_809F4978 = arg1;
D_809F497C = arg2;
#define BOSS06_DRAWFLAG_CURTAIN (1 << 0)
#define BOSS06_DRAWFLAG_LIGHT_RAY (1 << 1)
typedef enum {
/* 0 */ BOSS06_CS_STATE_BEGIN,
/* 1 */ BOSS06_CS_STATE_SHOW_BURNING_AND_REACTIONS,
/* 2 */ BOSS06_CS_STATE_PAN_OVER_LIGHT_RAY
} Boss06CutsceneState;
void Boss06_InitRand(s32 seedInit1, s32 seedInit2, s32 seedInit3) {
sBoss06Seed1 = seedInit1;
sBoss06Seed2 = seedInit2;
sBoss06Seed3 = seedInit3;
}
f32 func_809F2140(void) {
f32 temp_f2;
f32 Boss06_RandZeroOne(void) {
// Wichmann-Hill algorithm
f32 randFloat;
D_809F4974 = (D_809F4974 * 171) % 30269;
D_809F4978 = (D_809F4978 * 172) % 30307;
D_809F497C = (D_809F497C * 170) % 30323;
temp_f2 = (D_809F4974 / 30269.0f) + (D_809F4978 / 30307.0f) + (D_809F497C / 30323.0f);
sBoss06Seed1 = (sBoss06Seed1 * 171) % 30269;
sBoss06Seed2 = (sBoss06Seed2 * 172) % 30307;
sBoss06Seed3 = (sBoss06Seed3 * 170) % 30323;
while (temp_f2 >= 1.0f) {
temp_f2 -= 1.0f;
randFloat = (sBoss06Seed1 / 30269.0f) + (sBoss06Seed2 / 30307.0f) + (sBoss06Seed3 / 30323.0f);
while (randFloat >= 1.0f) {
randFloat -= 1.0f;
}
return fabsf(temp_f2);
return fabsf(randFloat);
}
void Boss06_Init(Actor* thisx, PlayState* play) {
Boss06* this = THIS;
u8* temp_v0;
u8* curtainTexture;
s32 i;
D_809F4970 = (EnKnight*)this->actor.parent;
sIgosInstance = (EnKnight*)this->actor.parent;
this->actor.colChkInfo.damageTable = &sDamageTable;
if ((KREG(64) != 0) || CHECK_EVENTINF(EVENTINF_INTRO_CS_WATCHED_IGOS_DU_IKANA)) {
this->actionFunc = func_809F2E14;
this->actionFunc = Boss06_SetupCurtainClosed;
} else {
this->actionFunc = func_809F2B64;
this->actionFunc = Boss06_SetupCloseCurtain;
}
Actor_SetScale(&this->actor, 0.1f);
Math_Vec3f_Copy(&this->actor.world.pos, &D_809F40EC[ENBOSS06_GET_PARAMS(&this->actor)]);
Math_Vec3f_Copy(&this->actor.world.pos, &sCurtainLocations[ENBOSS06_GET_PARAMS(&this->actor)]);
this->actor.shape.rot.y = -0x8000;
Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
temp_v0 = SEGMENTED_TO_K0(&object_knight_Tex_019490);
for (i = 0; i < ARRAY_COUNT(this->unk_200); i++) {
this->unk_200[i] = temp_v0[i];
curtainTexture = SEGMENTED_TO_K0(&gIkanaThroneRoomCurtainTex);
for (i = 0; i < ARRAY_COUNT(this->curtainTexture); i++) {
this->curtainTexture[i] = curtainTexture[i];
}
this->actor.flags &= ~ACTOR_FLAG_TARGETABLE;
@ -158,41 +175,42 @@ void Boss06_Init(Actor* thisx, PlayState* play) {
void Boss06_Destroy(Actor* thisx, PlayState* play) {
}
void func_809F23CC(Boss06* this) {
void Boss06_UpdateDamage(Boss06* this) {
if (this->collider.base.acFlags & AC_HIT) {
this->collider.base.acFlags &= ~AC_HIT;
if ((this->unk_1C9 == 0) && (D_809F4970->unk_68A == 0)) {
if (this->actor.colChkInfo.damageEffect == 2) {
func_809F24A8(this);
if ((this->csState == BOSS06_CS_STATE_BEGIN) && (sIgosInstance->subCamId == CAM_ID_MAIN)) {
if (this->actor.colChkInfo.damageEffect == BOSS06_DMGEFF_FIRE_ARROW) {
Boss06_SetupCurtainBurningCutscene(this);
Audio_PlaySfx(NA_SE_SY_TRE_BOX_APPEAR);
this->unk_1B0 = -(this->actor.world.pos.x - this->collider.info.bumper.hitPos.x);
this->unk_1BC = this->unk_1B0 * 0.35f;
this->arrowHitPos.x = -(this->actor.world.pos.x - this->collider.info.bumper.hitPos.x);
this->arrowHitPosScaled.x = this->arrowHitPos.x * 0.35f;
this->unk_1B4 = -((this->actor.world.pos.y + 80.0f) - this->collider.info.bumper.hitPos.y);
this->unk_1C0 = this->unk_1B4 * -0.35f;
this->arrowHitPos.y = -((this->actor.world.pos.y + 80.0f) - this->collider.info.bumper.hitPos.y);
this->arrowHitPosScaled.y = this->arrowHitPos.y * -0.35f;
}
}
}
}
void func_809F24A8(Boss06* this) {
this->actionFunc = func_809F24C8;
this->unk_A28 = 0.0f;
this->unk_1AC = 0.0f;
void Boss06_SetupCurtainBurningCutscene(Boss06* this) {
this->actionFunc = Boss06_CurtainBurningCutscene;
this->maxStepScale = 0.0f;
this->lensFlareYOffset = 0.0f;
}
void func_809F24C8(Boss06* this, PlayState* play) {
s16 sp4E = 0;
void Boss06_CurtainBurningCutscene(Boss06* this, PlayState* play) {
s16 frameTarget = 0;
Player* player = GET_PLAYER(play);
Actor* temp_s0;
Actor* temp_v0_2;
Actor* searchArrow;
Actor* searchKnight;
Actor* child;
this->unk_1CA++;
this->csFrameCount++;
switch (this->unk_1C9) {
case 0:
switch (this->csState) {
case BOSS06_CS_STATE_BEGIN:
if (CutsceneManager_GetCurrentCsId() != CS_ID_NONE) {
break;
}
@ -202,42 +220,41 @@ void func_809F24C8(Boss06* this, PlayState* play) {
this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
D_809F4970->unk_151 = 1;
this->unk_1C9 = 1;
this->unk_1C8 = 1;
this->unk_1E0 = 255.0f;
this->unk_1DC = 0.0f;
sIgosInstance->inCurtainCutscene = true;
this->csState = BOSS06_CS_STATE_SHOW_BURNING_AND_REACTIONS;
this->updateFireEffects = true;
this->lightOrbAlphaFactor = 255.0f;
this->lightOrbScale = 0.0f;
temp_s0 = play->actorCtx.actorLists[ACTORCAT_ITEMACTION].first;
while (temp_s0 != NULL) {
if (temp_s0->id == ACTOR_EN_ARROW) {
Actor_Kill(temp_s0);
// Kill all arrow actors
for (searchArrow = play->actorCtx.actorLists[ACTORCAT_ITEMACTION].first; searchArrow != NULL;
searchArrow = searchArrow->next) {
if (searchArrow->id == ACTOR_EN_ARROW) {
Actor_Kill(searchArrow);
}
temp_s0 = temp_s0->next;
}
case 1:
if (this->unk_1CA >= 10) {
Math_ApproachF(&this->unk_1E4, 30.0f, 0.2f, 1.0f);
case BOSS06_CS_STATE_SHOW_BURNING_AND_REACTIONS:
if (this->csFrameCount >= 10) {
Math_ApproachF(&this->lensFlareScale, 30.0f, 0.2f, 1.0f);
play->envCtx.fillScreen = true;
play->envCtx.screenFillColor[2] = 0;
play->envCtx.screenFillColor[1] = 0;
play->envCtx.screenFillColor[0] = 0;
play->envCtx.screenFillColor[3] = this->unk_A2C;
Math_ApproachF(&this->unk_A2C, 75.0f, 1.0f, 3.0f);
play->envCtx.screenFillColor[0] = play->envCtx.screenFillColor[1] = play->envCtx.screenFillColor[2] = 0;
play->envCtx.screenFillColor[3] = this->screenFillAlpha;
Math_ApproachF(&this->screenFillAlpha, 75.0f, 1.0f, 3.0f);
}
if (this->unk_1CA >= 30) {
if (this->csFrameCount >= 30) {
Audio_PlaySfx(NA_SE_EV_S_STONE_FLASH);
}
if (this->unk_1CA >= 60) {
if (this->csFrameCount >= 60) {
play->envCtx.fillScreen = false;
this->unk_1C8 = 0;
this->unk_1DC = 0.0f;
this->unk_1D8 = 0.0f;
if (this->unk_1CA == 60) {
D_809F4970->unk_154++;
this->updateFireEffects = false;
this->lightOrbScale = 0.0f;
this->fireEffectScale = 0.0f;
if (this->csFrameCount == 60) {
sIgosInstance->roomLightingState++;
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_132);
player->actor.shape.rot.y = 0;
player->actor.world.rot.y = player->actor.shape.rot.y;
@ -251,11 +268,11 @@ void func_809F24C8(Boss06* this, PlayState* play) {
this->subCamAt.y = player->actor.world.pos.y + 26.0f;
this->subCamAt.z = player->actor.world.pos.z;
if (this->unk_1CA >= 75) {
temp_v0_2 = play->actorCtx.actorLists[ACTORCAT_BOSS].first;
while (temp_v0_2 != NULL) {
if ((temp_v0_2->id == ACTOR_EN_KNIGHT) && (&D_809F4970->actor == temp_v0_2) &&
(D_809F4970->unk_680 != 0)) {
if (this->csFrameCount >= 75) {
for (searchKnight = play->actorCtx.actorLists[ACTORCAT_BOSS].first; searchKnight != NULL;
searchKnight = searchKnight->next) {
if ((searchKnight->id == ACTOR_EN_KNIGHT) && (&sIgosInstance->actor == searchKnight) &&
sIgosInstance->inCurtainReaction) {
this->subCamEye.x = 1307.0f;
this->subCamEye.y = 142.0f;
this->subCamEye.z = 2897.0f;
@ -264,27 +281,26 @@ void func_809F24C8(Boss06* this, PlayState* play) {
this->subCamAt.y = 132.0f;
this->subCamAt.z = 2860.0f;
if (this->unk_1CA == 75) {
D_809F4970->unk_148 = 1;
if (this->csFrameCount == 75) {
sIgosInstance->subAction = KNIGHT_SUB_ACTION_CURTAIN_REACT_BEGIN;
}
sp4E = 17;
frameTarget = 17;
break;
}
temp_v0_2 = temp_v0_2->next;
}
}
if ((s16)(sp4E + 80) < this->unk_1CA) {
this->unk_1C9 = 2;
this->unk_1CA = 0;
this->unk_1B4 = 0.0f;
this->unk_1B0 = 0.0f;
this->unk_144 = 2;
this->unk_1A4 = 0.0f;
this->unk_1A0 = 0.0f;
this->unk_1DC = 18.0f;
this->unk_1E0 = 255.0f;
this->unk_19C = 1.0f;
if (this->csFrameCount > (s16)(frameTarget + 80)) {
this->csState = BOSS06_CS_STATE_PAN_OVER_LIGHT_RAY;
this->csFrameCount = 0;
this->arrowHitPos.y = 0.0f;
this->arrowHitPos.x = 0.0f;
this->drawFlags = BOSS06_DRAWFLAG_LIGHT_RAY;
this->lightRayBaseOffsetZ = 0.0f;
this->lightRayTopVerticesOffset = 0.0f;
this->lightOrbScale = 18.0f;
this->lightOrbAlphaFactor = 255.0f;
this->lightRayBrightness = 1.0f;
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_MIR_RAY2, this->actor.world.pos.x,
this->actor.world.pos.y - 200.0f, this->actor.world.pos.z - 170.0f, 15, 0, 0, 1);
@ -312,27 +328,27 @@ void func_809F24C8(Boss06* this, PlayState* play) {
}
break;
case 2:
case BOSS06_CS_STATE_PAN_OVER_LIGHT_RAY:
child = this->actor.child;
if (this->unk_1CA == 1) {
this->unk_A1C.x = fabsf(this->subCamAt.x - child->world.pos.x);
this->unk_A1C.y = fabsf(this->subCamAt.y - child->world.pos.y);
this->unk_A1C.z = fabsf(this->subCamAt.z - child->world.pos.z);
if (this->csFrameCount == 1) {
this->subCamMaxStep.x = fabsf(this->subCamAt.x - child->world.pos.x);
this->subCamMaxStep.y = fabsf(this->subCamAt.y - child->world.pos.y);
this->subCamMaxStep.z = fabsf(this->subCamAt.z - child->world.pos.z);
}
Math_ApproachF(&this->subCamAt.x, child->world.pos.x, 0.15f, this->unk_A1C.x * this->unk_A28);
Math_ApproachF(&this->subCamAt.y, child->world.pos.y, 0.15f, this->unk_A1C.y * this->unk_A28);
Math_ApproachF(&this->subCamAt.z, child->world.pos.z, 0.15f, this->unk_A1C.z * this->unk_A28);
Math_ApproachF(&this->unk_A28, 1.0f, 1.0f, 0.001f);
Math_ApproachF(&this->subCamAt.x, child->world.pos.x, 0.15f, this->subCamMaxStep.x * this->maxStepScale);
Math_ApproachF(&this->subCamAt.y, child->world.pos.y, 0.15f, this->subCamMaxStep.y * this->maxStepScale);
Math_ApproachF(&this->subCamAt.z, child->world.pos.z, 0.15f, this->subCamMaxStep.z * this->maxStepScale);
Math_ApproachF(&this->maxStepScale, 1.0f, 1.0f, 0.001f);
if (this->unk_1CA > 80) {
func_809F2ED0(this, play);
if (this->csFrameCount > 80) {
Boss06_SetupCurtainDestroyed(this, play);
func_80169AFC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE;
Cutscene_StopManual(play, &play->csCtx);
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END);
D_809F4970->unk_151 = 0;
sIgosInstance->inCurtainCutscene = false;
}
break;
}
@ -343,151 +359,158 @@ void func_809F24C8(Boss06* this, PlayState* play) {
}
}
void func_809F2B64(Boss06* this, PlayState* play) {
this->actionFunc = func_809F2C44;
this->unk_144 = 3;
this->unk_1A8 = 110.0f;
this->unk_1E0 = 200;
this->unk_1DC = 15.0f;
this->unk_1E4 = 30.0f;
this->unk_1AC = 0.0f;
this->unk_19C = 1.0f;
void Boss06_SetupCloseCurtain(Boss06* this, PlayState* play) {
this->actionFunc = Boss06_CloseCurtain;
this->drawFlags = BOSS06_DRAWFLAG_LIGHT_RAY | BOSS06_DRAWFLAG_CURTAIN;
this->curtainHeight = 110.0f;
this->lightOrbAlphaFactor = 200;
this->lightOrbScale = 15.0f;
this->lensFlareScale = 30.0f;
this->lensFlareYOffset = 0.0f;
this->lightRayBrightness = 1.0f;
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_MIR_RAY2, this->actor.world.pos.x,
this->actor.world.pos.y - 200.0f, this->actor.world.pos.z - 170.0f, 15, 0, 0, 1);
D_809F4970->unk_154++;
sIgosInstance->roomLightingState++;
}
void func_809F2C44(Boss06* this, PlayState* play) {
if (D_809F4970->unk_153 != 0) {
this->unk_A28 = 0.008f;
Math_ApproachF(&this->unk_1E4, 0.0f, 0.2f, this->unk_A28 * 30.0f);
Math_ApproachF(&this->unk_1AC, -70.0f, 0.2f, this->unk_A28 * 70.0f);
Math_ApproachF(&this->unk_1A8, 0.0f, 0.2f, this->unk_A28 * 110.0f);
Math_ApproachF(&this->unk_1A0, -900.0f, 0.2f, this->unk_A28 * 900.0f);
Math_ApproachF(&this->unk_1A4, 1350.0f, 0.2f, this->unk_A28 * 1350.0f);
Math_ApproachF(&this->unk_1E0, 100.0f, 0.2f, this->unk_A28 * 100.0f);
void Boss06_CloseCurtain(Boss06* this, PlayState* play) {
if (sIgosInstance->closeCurtainAction != KNIGHT_CLOSE_CURTAIN_ACTION_0) {
this->maxStepScale = 0.008f;
Math_ApproachF(&this->lensFlareScale, 0.0f, 0.2f, this->maxStepScale * 30.0f);
Math_ApproachF(&this->lensFlareYOffset, -70.0f, 0.2f, this->maxStepScale * 70.0f);
Math_ApproachF(&this->curtainHeight, 0.0f, 0.2f, this->maxStepScale * 110.0f);
Math_ApproachF(&this->lightRayTopVerticesOffset, -900.0f, 0.2f, this->maxStepScale * 900.0f);
Math_ApproachF(&this->lightRayBaseOffsetZ, 1350.0f, 0.2f, this->maxStepScale * 1350.0f);
Math_ApproachF(&this->lightOrbAlphaFactor, 100.0f, 0.2f, this->maxStepScale * 100.0f);
if (this->unk_1E4 < 5.0f) {
Math_ApproachF(&this->unk_19C, 0.0f, 1.0f, 0.03f);
if (this->lensFlareScale < 5.0f) {
Math_ApproachF(&this->lightRayBrightness, 0.0f, 1.0f, 0.03f);
}
if ((this->unk_1E4 > 0.1f) && ENBOSS06_GET_PARAMS(&this->actor) == 0) {
if ((this->lensFlareScale > 0.1f) && ENBOSS06_GET_PARAMS(&this->actor) == 0) {
// Plays the sfx for just one of the curtains
Audio_PlaySfx(NA_SE_EV_CURTAIN_DOWN - SFX_FLAG);
}
}
if (D_809F4970->unk_153 == 2) {
if (sIgosInstance->closeCurtainAction == KNIGHT_CLOSE_CURTAIN_ACTION_2) {
Actor_Kill(this->actor.child);
this->actor.child = NULL;
func_809F2E14(this, play);
Boss06_SetupCurtainClosed(this, play);
}
}
void func_809F2E14(Boss06* this, PlayState* play) {
this->actionFunc = func_809F2E34;
this->unk_144 = 1;
void Boss06_SetupCurtainClosed(Boss06* this, PlayState* play) {
this->actionFunc = Boss06_CurtainClosed;
this->drawFlags = BOSS06_DRAWFLAG_CURTAIN;
}
void func_809F2E34(Boss06* this, PlayState* play) {
this->unk_1E0 = 200.0f;
this->unk_1DC = 15.0f;
func_809F23CC(this);
void Boss06_CurtainClosed(Boss06* this, PlayState* play) {
this->lightOrbAlphaFactor = 200.0f;
this->lightOrbScale = 15.0f;
Boss06_UpdateDamage(this);
Collider_UpdateCylinder(&this->actor, &this->collider);
this->collider.dim.pos.z = (this->actor.world.pos.z - 50.0f) + 100.0f;
CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base);
}
void func_809F2ED0(Boss06* this, PlayState* play) {
this->actionFunc = func_809F2EE8;
void Boss06_SetupCurtainDestroyed(Boss06* this, PlayState* play) {
this->actionFunc = Boss06_CurtainDestroyed;
}
void func_809F2EE8(Boss06* this, PlayState* play) {
this->unk_1E0 = 100.0f;
this->unk_1DC = 13.0f;
void Boss06_CurtainDestroyed(Boss06* this, PlayState* play) {
this->lightOrbAlphaFactor = 100.0f;
this->lightOrbScale = 13.0f;
}
void Boss06_Update(Actor* thisx, PlayState* play) {
Boss06* this = THIS;
s32 i;
Vec3f sp7C;
f32 temp_f22;
f32 phi_f26;
f32 phi_f24;
this->actionFunc(this, play);
if (this->unk_146 != 0) {
this->unk_146--;
if (this->unusedTimer1 != 0) {
this->unusedTimer1--;
}
if (this->unk_148 != 0) {
this->unk_148--;
if (this->unusedTimer2 != 0) {
this->unusedTimer2--;
}
if (this->unk_1E4 > 0.0f) {
if (this->lensFlareScale > 0.0f) {
if (ENBOSS06_GET_PARAMS(&this->actor) == 0) {
gCustomLensFlare1On = true;
gCustomLensFlare1Pos.x = this->actor.world.pos.x + this->unk_1B0;
gCustomLensFlare1Pos.y = this->actor.world.pos.y + 80.0f + this->unk_1B4 + this->unk_1AC;
gCustomLensFlare1Pos.x = this->actor.world.pos.x + this->arrowHitPos.x;
gCustomLensFlare1Pos.y = this->actor.world.pos.y + 80.0f + this->arrowHitPos.y + this->lensFlareYOffset;
gCustomLensFlare1Pos.z = this->actor.world.pos.z;
D_801F4E44 = this->unk_1E4;
D_801F4E44 = this->lensFlareScale;
D_801F4E48 = 10.0f;
D_801F4E4C = 0;
} else {
gCustomLensFlare2On = true;
gCustomLensFlare2Pos.x = this->actor.world.pos.x + this->unk_1B0;
gCustomLensFlare2Pos.y = this->actor.world.pos.y + 80.0f + this->unk_1B4 + this->unk_1AC;
gCustomLensFlare2Pos.x = this->actor.world.pos.x + this->arrowHitPos.x;
gCustomLensFlare2Pos.y = this->actor.world.pos.y + 80.0f + this->arrowHitPos.y + this->lensFlareYOffset;
gCustomLensFlare2Pos.z = this->actor.world.pos.z;
D_801F4E5C = this->unk_1E4;
D_801F4E5C = this->lensFlareScale;
D_801F4E60 = 10.0f;
D_801F4E64 = 0;
}
} else if (ENBOSS06_GET_PARAMS(&this->actor) == 0) {
gCustomLensFlare1On = false;
} else {
gCustomLensFlare2On = false;
if (ENBOSS06_GET_PARAMS(&this->actor) == 0) {
gCustomLensFlare1On = false;
} else {
gCustomLensFlare2On = false;
}
}
if ((this->unk_1C8 != 0) && (this->unk_1C8 != 0)) {
if (this->updateFireEffects && this->updateFireEffects) {
s32 i;
Vec3f texCoords;
f32 distFromHitPos;
f32 angle0;
f32 angle1;
Audio_PlaySfx(NA_SE_EV_FIRE_PLATE - SFX_FLAG);
this->unk_1CC += 0.6f;
this->unk_1D0 += 0.1f;
this->unk_1D4 += 0.0200000014156f;
this->unk_1D8 += 0.00016f;
this->unk_1DC += 0.4f;
Math_ApproachZeroF(&this->unk_1B0, 1.0f, 0.7f);
Math_ApproachZeroF(&this->unk_1B4, 1.0f, 0.7f);
this->fireEffectDistanceAdd += 0.6f;
this->fireEffectDistanceScale2 += 0.1f;
this->fireEffectDistanceScale1 += 20.0f * 0.001f;
this->fireEffectScale += 0.00016f;
this->lightOrbScale += 0.4f;
Math_ApproachZeroF(&this->arrowHitPos.x, 1.0f, 0.7f);
Math_ApproachZeroF(&this->arrowHitPos.y, 1.0f, 0.7f);
phi_f26 = 0.0f;
phi_f24 = 0.0f;
angle0 = 0.0f;
angle1 = 0.0f;
for (i = 0; i < 1024; i++) {
temp_f22 = (((sinf(phi_f24) * this->unk_1D4) + 1.0f) * ((sinf(phi_f26) * this->unk_1D0) + this->unk_1D0)) +
this->unk_1CC;
for (i = 0; i < 8 * ARRAY_COUNT(sCurtainFireEffectPositions); i++) {
distFromHitPos = (sinf(angle1) * this->fireEffectDistanceScale1 + 1.0f) *
(sinf(angle0) * this->fireEffectDistanceScale2 + this->fireEffectDistanceScale2) +
this->fireEffectDistanceAdd;
phi_f26 += (M_PIf / 64);
phi_f24 += 0.030679617f;
angle0 += M_PIf / 64;
angle1 += 5 * M_PIf / 512;
Matrix_RotateZF(i * (M_PIf / 512), MTXMODE_NEW);
Matrix_MultVecY(temp_f22, &sp7C);
Matrix_MultVecY(distFromHitPos, &texCoords);
sp7C.x += 32.0f + this->unk_1BC;
sp7C.y += 32.0f + this->unk_1C0;
texCoords.x += (BOSS06_CURTAIN_TEX_WIDTH / 2) + this->arrowHitPosScaled.x;
texCoords.y += (BOSS06_CURTAIN_TEX_HEIGHT / 2) + this->arrowHitPosScaled.y;
if ((i % 8) == 0) {
Math_Vec3f_Copy(&D_809F4370[i / 8], &sp7C);
Math_Vec3f_Copy(&sCurtainFireEffectPositions[i / 8], &texCoords);
}
if ((sp7C.x >= 0.0f) && (sp7C.y >= 0.0f) && (sp7C.x < 64.0f) && (sp7C.y < 64.0f)) {
s32 x = sp7C.x;
s32 idx = ((s32)sp7C.y << 5);
if ((texCoords.x >= 0.0f) && (texCoords.y >= 0.0f) && (texCoords.x < BOSS06_CURTAIN_TEX_WIDTH) &&
(texCoords.y < BOSS06_CURTAIN_TEX_HEIGHT)) {
s32 x = texCoords.x;
s32 idx = ((s32)texCoords.y * (BOSS06_CURTAIN_TEX_WIDTH / 2));
idx += (x / 2);
// The texture format is CI4, only zero one pixel
if ((x % 2) != 0) {
this->unk_200[idx] &= 0xF0;
this->curtainTexture[idx] &= 0xF0;
} else {
this->unk_200[idx] &= 0xF;
this->curtainTexture[idx] &= 0xF;
}
}
}
@ -498,127 +521,204 @@ void Boss06_Draw(Actor* thisx, PlayState* play2) {
PlayState* play = play2;
Boss06* this = THIS;
s32 i;
f32 spE0 = 0.0f;
s16 temp_s0;
s16 temp_f10;
Vtx* temp_v0_2;
u16 temp_v0;
f32 lightOrbOffsetZ = 0.0f;
s16 lightRayBaseX;
s16 lightRayBaseZ;
Vtx* vertices;
u16 time;
u16 pad;
u8 spD3;
u8 spD2;
s32 maxColor = 255; //! FAKE:
f32 sp68;
u8 lightRayAlpha;
u8 floorLightAlpha;
s32 lightRayGreenFactor = 255;
f32 lightRayBlueFactor;
OPEN_DISPS(play->state.gfxCtx);
Gfx_SetupDL25_Xlu(play->state.gfxCtx);
Gfx_SetupDL25_Opa(play->state.gfxCtx);
temp_v0 = CURRENT_TIME;
if (temp_v0 > CLOCK_TIME(12, 0)) {
temp_v0 = (DAY_LENGTH - 1) - temp_v0;
time = CURRENT_TIME;
if (time > CLOCK_TIME(12, 0)) {
time = (DAY_LENGTH - 1) - time;
}
sp68 = (f32)temp_v0 / 0x8000;
spD3 = ((10.0f * sp68) + 105.0f) * this->unk_19C;
spD2 = ((40.0f * sp68) + 55.0f) * this->unk_19C;
lightRayBlueFactor = (f32)time / 0x8000;
lightRayAlpha = (10.0f * lightRayBlueFactor + 105.0f) * this->lightRayBrightness;
floorLightAlpha = (40.0f * lightRayBlueFactor + 55.0f) * this->lightRayBrightness;
if (this->unk_144 & 2) {
temp_s0 = Math_SinS(D_809F4970->unk_144) * 1000.0f;
temp_f10 = (Math_CosS(D_809F4970->unk_144) * -2000.0f) - 2000.0f;
temp_v0_2 = SEGMENTED_TO_K0(&object_knight_Vtx_018BD0);
if (this->drawFlags & BOSS06_DRAWFLAG_LIGHT_RAY) {
lightRayBaseX = Math_SinS(sIgosInstance->curtainsLightRayAngle) * 1000.0f;
lightRayBaseZ = Math_CosS(sIgosInstance->curtainsLightRayAngle) * -2000.0f - 2000.0f;
vertices = SEGMENTED_TO_K0(&gIkanaThroneRoomLightRayVtx);
temp_v0_2[0].v.ob[1] = TRUNCF_BINANG(this->unk_1A0) + 0xE92;
temp_v0_2[3].v.ob[1] = TRUNCF_BINANG(this->unk_1A0) + 0xE92;
temp_v0_2[4].v.ob[1] = TRUNCF_BINANG(this->unk_1A0) + 0xE92;
temp_v0_2[7].v.ob[1] = TRUNCF_BINANG(this->unk_1A0) + 0xE92;
/*
* Vertices:
* [ 0] ( 300, 3730, 1112)
* [ 1] ( 300, 2830, 1112)
* [ 2] (-300, 2830, 1112)
* [ 3] (-300, 3730, 1112)
* Triangles:
* ( 0, 1, 2), ( 2, 3, 0)
* Diagrams:
* -300 300
* (3)---------(0) 3730
* | . |
* | . |
* y | . |
* ^ (2)---------(1) 2830
* |
* o--> x
*
*
* Vertices:
* [ 4] ( 300, 3730, 1112) Shared with above
* [ 5] ( 675, 0, -1800)
* [ 6] (-675, 0, -1800)
* [ 7] (-300, 3730, 1112) Shared with above
* [ 8] ( 300, 2830, 1112) Shared with above
* [ 9] ( 675, 0, - 450)
* [10] (-300, 2830, 1112) Shared with above
* [11] (-675, 0, - 450)
* [12] ( 675, 0, - 450)
* [13] ( 300, 2830, 1112) Shared with above
* Triangles:
* ( 4, 5, 6), ( 4, 6, 7)
* ( 8, 9, 5), ( 8, 5, 4)
* (10, 11, 12), (10, 12, 13)
* ( 7, 6, 11), ( 7, 11, 10)
* Diagrams:
* -675 675
* (11)---------(12) -450
* | |
* | |
* z | |
* ^ (6)---------(5) -1800
* |
* o--> x
* -300 300
* (7)---------(4) 3730
* | |
* | |
* y | |
* ^ (10)---------(13) 2830
* |
* o--> x
*
*
* Vertices:
* [14] (-825, 0, -1950)
* [15] (-825, 0, 0)
* [16] ( 825, 0, 0)
* [17] ( 825, 0, -1950)
* Triangles:
* (14, 15, 16), (14, 16, 17)
* Diagram:
* -825 825
* (15)---------(16) 0
* | . |
* | . |
* z | . |
* ^ (14)---------(17) -1950
* |
* o--> x
*/
temp_v0_2[5].v.ob[0] = temp_s0 + 0x2A3;
temp_v0_2[5].v.ob[2] = (temp_f10 + TRUNCF_BINANG(this->unk_1A4)) - 0x708;
// Vertices 0-3 form a rectangle on the wall.
// Vertices 4-13 are the 4 faces of the ray.
// Vertices 14-17 form a rectangle on the floor.
temp_v0_2[6].v.ob[0] = temp_s0 - 0x2A3;
temp_v0_2[6].v.ob[2] = (temp_f10 + TRUNCF_BINANG(this->unk_1A4)) - 0x708;
// Vertices 1,2,8,10,13 don't need to move, these are the vertices at the lower part of the [0,1,2,3] rectangle
temp_v0_2[9].v.ob[0] = temp_s0 + 0x2A3;
temp_v0_2[9].v.ob[2] = temp_f10 - 0x1C2;
// These vertices are the 4 highest vertices, move these up and down based on the curtain height.
vertices[0].v.ob[1] = 3730 + (s16)(s32)this->lightRayTopVerticesOffset;
vertices[3].v.ob[1] = 3730 + (s16)(s32)this->lightRayTopVerticesOffset;
vertices[4].v.ob[1] = 3730 + (s16)(s32)this->lightRayTopVerticesOffset;
vertices[7].v.ob[1] = 3730 + (s16)(s32)this->lightRayTopVerticesOffset;
temp_v0_2[11].v.ob[0] = temp_s0 - 0x2A3;
temp_v0_2[11].v.ob[2] = temp_f10 - 0x1C2;
// Move the ray based on the angle
vertices[5].v.ob[0] = lightRayBaseX + 675;
vertices[5].v.ob[2] = lightRayBaseZ + (s16)(s32)this->lightRayBaseOffsetZ - 1800;
vertices[6].v.ob[0] = lightRayBaseX - 675;
vertices[6].v.ob[2] = lightRayBaseZ + (s16)(s32)this->lightRayBaseOffsetZ - 1800;
vertices[9].v.ob[0] = lightRayBaseX + 675;
vertices[9].v.ob[2] = lightRayBaseZ - 450;
vertices[11].v.ob[0] = lightRayBaseX - 675;
vertices[11].v.ob[2] = lightRayBaseZ - 450;
vertices[12].v.ob[0] = lightRayBaseX + 675;
vertices[12].v.ob[2] = lightRayBaseZ - 450;
temp_v0_2[12].v.ob[0] = temp_s0 + 0x2A3;
temp_v0_2[12].v.ob[2] = temp_f10 - 0x1C2;
temp_v0_2[14].v.ob[0] = temp_s0 - 0x339;
temp_v0_2[14].v.ob[2] = temp_f10 - 0x79E;
temp_v0_2[15].v.ob[0] = temp_s0 - 0x339;
temp_v0_2[15].v.ob[2] = temp_f10;
temp_v0_2[16].v.ob[0] = temp_s0 + 0x339;
temp_v0_2[16].v.ob[2] = temp_f10;
temp_v0_2[17].v.ob[0] = temp_s0 + 0x339;
temp_v0_2[17].v.ob[2] = temp_f10 - 0x79E;
// Move the rectangle cast on the floor based on the ray angle
vertices[14].v.ob[0] = lightRayBaseX - 825;
vertices[14].v.ob[2] = lightRayBaseZ - 1950;
vertices[15].v.ob[0] = lightRayBaseX - 825;
vertices[15].v.ob[2] = lightRayBaseZ;
vertices[16].v.ob[0] = lightRayBaseX + 825;
vertices[16].v.ob[2] = lightRayBaseZ;
vertices[17].v.ob[0] = lightRayBaseX + 825;
vertices[17].v.ob[2] = lightRayBaseZ - 1950;
if (this->actor.child != NULL) {
Actor* child = this->actor.child;
child->world.pos.x = this->actor.world.pos.x + (temp_s0 * 0.1f);
child->world.pos.z = (this->actor.world.pos.z - 170.0f) + (temp_f10 * 0.1f);
child->world.pos.x = this->actor.world.pos.x + (lightRayBaseX * 0.1f);
child->world.pos.z = (this->actor.world.pos.z - 170.0f) + (lightRayBaseZ * 0.1f);
}
AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&object_knight_Matanimheader_019360));
AnimatedMat_Draw(play, Lib_SegmentedToVirtual(&gIkanaThroneRoomLightRayTexAnim));
Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y - 234.0f, this->actor.world.pos.z + 30.0f,
MTXMODE_NEW);
Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY);
Matrix_Translate(0.0f, 0.0f, -1112.0f, MTXMODE_APPLY);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 155, 255, maxColor, (u8)((140.0f * sp68) + 115.0f), spD3);
gSPDisplayList(POLY_XLU_DISP++, object_knight_DL_018CF0);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 255, 255, maxColor, (u8)((100.0f * sp68) + 65.0f), spD2);
gSPDisplayList(POLY_XLU_DISP++, object_knight_DL_018DE0);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 155, 255, lightRayGreenFactor, (u8)(140.0f * lightRayBlueFactor + 115.0f),
lightRayAlpha);
gSPDisplayList(POLY_XLU_DISP++, gIkanaThroneRoomLightRayDL);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 255, 255, lightRayGreenFactor, (u8)(100.0f * lightRayBlueFactor + 65.0f),
floorLightAlpha);
gSPDisplayList(POLY_XLU_DISP++, gIkanaThroneRoomLightOnFloorDL);
//! FAKE:
if (1) {}
}
if (this->unk_144 & 1) {
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(&this->unk_200));
if (this->drawFlags & BOSS06_DRAWFLAG_CURTAIN) {
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(&this->curtainTexture));
Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y + this->unk_1A8, this->actor.world.pos.z,
MTXMODE_NEW);
Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y + this->curtainHeight,
this->actor.world.pos.z, MTXMODE_NEW);
Matrix_Scale(this->actor.scale.x, this->actor.scale.y, 0.0f, MTXMODE_APPLY);
Matrix_RotateYS(this->actor.shape.rot.y, MTXMODE_APPLY);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, object_knight_DL_0193B0);
gSPDisplayList(POLY_OPA_DISP++, gIkanaThroneRoomCurtainDL);
if (this->unk_1D8 > 0.0f) {
if (this->fireEffectScale > 0.0f) {
Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y + 84.0f, this->actor.world.pos.z - 2.0f,
MTXMODE_NEW);
Matrix_RotateYS(this->actor.shape.rot.y, MTXMODE_APPLY);
func_809F2120(1, 0x71A5, 0x263A);
Boss06_InitRand(1, 29093, 9786);
gDPSetEnvColor(POLY_XLU_DISP++, 255, 10, 0, 0);
gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 128, 255, 255, 0, 230);
for (i = 0; i < ARRAY_COUNT(D_809F4370); i++) {
if ((fabsf(D_809F4370[i].x - 32.0f) < 30.0f) && (fabsf(D_809F4370[i].y - 32.0f) < 30.0f)) {
for (i = 0; i < ARRAY_COUNT(sCurtainFireEffectPositions); i++) {
if ((fabsf(sCurtainFireEffectPositions[i].x - 32.0f) < 30.0f) &&
(fabsf(sCurtainFireEffectPositions[i].y - 32.0f) < 30.0f)) {
Matrix_Push();
gSPSegment(POLY_XLU_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, 0, 0x20, 0x40, 1, 0,
((play->gameplayFrames + (i * 10)) * -20) % 512, 0x20, 0x80));
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, 0, 32, 64, 1, 0,
((play->gameplayFrames + (i * 10)) * -20) % 512, 32, 128));
Matrix_Translate((D_809F4370[i].x - 32.0f) * -2.4f, (D_809F4370[i].y - 32.0f) * -2.4f, 0.0f,
MTXMODE_APPLY);
Matrix_Translate((sCurtainFireEffectPositions[i].x - 32.0f) * -2.4f,
(sCurtainFireEffectPositions[i].y - 32.0f) * -2.4f, 0.0f, MTXMODE_APPLY);
Matrix_RotateZF(i * (M_PIf / 64), MTXMODE_APPLY);
if (func_809F2140() < 0.5f) {
if (Boss06_RandZeroOne() < 0.5f) {
Matrix_RotateYF(M_PIf, MTXMODE_APPLY);
}
Matrix_Scale(-0.02f / 10.0f, -this->unk_1D8, 1.0f, MTXMODE_APPLY);
Matrix_Scale(-0.02f / 10.0f, -this->fireEffectScale, 1.0f, MTXMODE_APPLY);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
@ -628,21 +728,22 @@ void Boss06_Draw(Actor* thisx, PlayState* play2) {
}
}
} else {
spE0 = 7.0f;
lightOrbOffsetZ = 7.0f;
}
}
if (this->unk_1DC > 0.0f) {
u8 temp_s2 = (this->unk_1E0 - 50.0f) + (50.0f * sp68);
if (this->lightOrbScale > 0.0f) {
u8 lightOrbAlpha = (this->lightOrbAlphaFactor - 50.0f) + (50.0f * lightRayBlueFactor);
Matrix_Translate(this->actor.world.pos.x + this->unk_1B0, this->actor.world.pos.y + 84.0f + this->unk_1B4,
(this->actor.world.pos.z - 2.0f) + spE0, MTXMODE_NEW);
Matrix_Translate(this->actor.world.pos.x + this->arrowHitPos.x,
this->actor.world.pos.y + 84.0f + this->arrowHitPos.y,
(this->actor.world.pos.z - 2.0f) + lightOrbOffsetZ, MTXMODE_NEW);
gSPDisplayList(POLY_XLU_DISP++, gLightOrbMaterial1DL);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, (u8)((140.0f * sp68) + 115.0f), temp_s2);
gDPSetEnvColor(POLY_XLU_DISP++, 255, 205, (u8)((100.0f * sp68) + 65.0f), 128);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, (u8)(140.0f * lightRayBlueFactor + 115.0f), lightOrbAlpha);
gDPSetEnvColor(POLY_XLU_DISP++, 255, 205, (u8)(100.0f * lightRayBlueFactor + 65.0f), 128);
Matrix_Scale(this->unk_1DC, this->unk_1DC, 1.0f, MTXMODE_APPLY);
Matrix_Scale(this->lightOrbScale, this->lightOrbScale, 1.0f, MTXMODE_APPLY);
Matrix_RotateZS(play->gameplayFrames * 64, MTXMODE_APPLY);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);

View File

@ -9,45 +9,48 @@ typedef void (*Boss06ActionFunc)(struct Boss06*, PlayState*);
#define ENBOSS06_GET_PARAMS(thisx) ((thisx)->params)
#define BOSS06_CURTAIN_TEX_WIDTH 64
#define BOSS06_CURTAIN_TEX_HEIGHT 64
#define BOSS06_CURTAIN_TEX_SIZE ((BOSS06_CURTAIN_TEX_WIDTH * BOSS06_CURTAIN_TEX_HEIGHT) / 2) // 64x64 CI4
typedef struct Boss06 {
/* 0x000 */ Actor actor;
/* 0x144 */ u8 unk_144;
/* 0x146 */ s16 unk_146;
/* 0x148 */ s16 unk_148;
/* 0x144 */ u8 drawFlags;
/* 0x146 */ s16 unusedTimer1;
/* 0x148 */ s16 unusedTimer2;
/* 0x14C */ ColliderCylinder collider;
/* 0x198 */ Boss06ActionFunc actionFunc;
/* 0x19C */ f32 unk_19C;
/* 0x1A0 */ f32 unk_1A0;
/* 0x1A4 */ f32 unk_1A4;
/* 0x1A8 */ f32 unk_1A8;
/* 0x1AC */ f32 unk_1AC;
/* 0x1B0 */ f32 unk_1B0;
/* 0x1B4 */ f32 unk_1B4;
/* 0x1B8 */ UNK_TYPE1 unk1B8[4];
/* 0x1BC */ f32 unk_1BC;
/* 0x1C0 */ f32 unk_1C0;
/* 0x1C4 */ UNK_TYPE1 unk1C4[4];
/* 0x1C8 */ u8 unk_1C8;
/* 0x1C9 */ u8 unk_1C9;
/* 0x1CA */ s16 unk_1CA;
/* 0x1CC */ f32 unk_1CC;
/* 0x1D0 */ f32 unk_1D0;
/* 0x1D4 */ f32 unk_1D4;
/* 0x1D8 */ f32 unk_1D8;
/* 0x1DC */ f32 unk_1DC;
/* 0x1E0 */ f32 unk_1E0;
/* 0x1E4 */ f32 unk_1E4;
/* 0x1E8 */ UNK_TYPE1 unk1E8[0x15];
/* 0x1FD */ u8 unk_1FD;
/* 0x1FE */ u8 unk_1FE;
/* 0x1FF */ u8 unk_1FF;
/* 0x200 */ u8 unk_200[0x800];
/* 0x19C */ f32 lightRayBrightness;
/* 0x1A0 */ f32 lightRayTopVerticesOffset;
/* 0x1A4 */ f32 lightRayBaseOffsetZ;
/* 0x1A8 */ f32 curtainHeight;
/* 0x1AC */ f32 lensFlareYOffset;
/* 0x1B0 */ Vec3f arrowHitPos;
/* 0x1BC */ Vec3f arrowHitPosScaled;
/* 0x1C8 */ u8 updateFireEffects;
/* 0x1C9 */ u8 csState;
/* 0x1CA */ s16 csFrameCount;
/* 0x1CC */ f32 fireEffectDistanceAdd;
/* 0x1D0 */ f32 fireEffectDistanceScale2;
/* 0x1D4 */ f32 fireEffectDistanceScale1;
/* 0x1D8 */ f32 fireEffectScale;
/* 0x1DC */ f32 lightOrbScale;
/* 0x1E0 */ f32 lightOrbAlphaFactor;
/* 0x1E4 */ f32 lensFlareScale;
// Maybe the texture was given 64-byte alignment instead of 64-bit despite not requiring it?
// However alignment > 0x10 inside an actor structure is not enough to guarantee overall memory
// alignment since the zelda arena allocator assumes 0x10 alignment is sufficient for any allocation.
/* 0x1E8 */ UNK_TYPE1 unk_1E8[0x18];
union {
/* 0x200 */ u8 curtainTexture[BOSS06_CURTAIN_TEX_SIZE];
u64 force_structure_alignment; // This buffer is used as a texture so requires 64-bit memory alignment
};
/* 0xA00 */ s16 subCamId;
/* 0xA04 */ Vec3f subCamEye;
/* 0xA10 */ Vec3f subCamAt;
/* 0xA1C */ Vec3f unk_A1C;
/* 0xA28 */ f32 unk_A28;
/* 0xA2C */ f32 unk_A2C;
/* 0xA1C */ Vec3f subCamMaxStep;
/* 0xA28 */ f32 maxStepScale;
/* 0xA2C */ f32 screenFillAlpha;
} Boss06; // size = 0xA30
#endif // Z_BOSS_06_H

File diff suppressed because it is too large Load Diff

View File

@ -1,29 +1,155 @@
#ifndef Z_EN_KNIGHT_H
#define Z_EN_KNIGHT_H
#include "assert.h"
#include "global.h"
#include "objects/object_knight/object_knight.h"
static_assert((u32)IGOS_LIMB_MAX == (u32)KNIGHT_LIMB_MAX,
"The skeletons for Igos du Ikana and his aides must match in structure");
struct EnKnight;
typedef void (*EnKnightActionFunc)(struct EnKnight*, PlayState*);
typedef enum {
/* 0 */ EN_KNIGHT_PARAM_IGOS_MAIN = 0,
/* 35 */ EN_KNIGHT_PARAM_OTHERS = 35,
/* 100 */ EN_KNIGHT_PARAM_IGOS_HEAD = 100,
/* 200 */ EN_KNIGHT_PARAM_KNIGHT_BODY_AFTERIMAGE = 200,
/* 201 */ EN_KNIGHT_PARAM_IGOS_BODY_AFTERIMAGE,
/* 202 */ EN_KNIGHT_PARAM_IGOS_HEAD_AFTERIMAGE
} EnKnightParam;
typedef enum {
/* 0 */ KNIGHT_SUB_ACTION_CURTAIN_REACT_WAIT,
/* 1 */ KNIGHT_SUB_ACTION_CURTAIN_REACT_BEGIN,
/* 2 */ KNIGHT_SUB_ACTION_CURTAIN_REACT_PERFORM
} EnKnightSubActionCurtainReact;
typedef enum {
/* 0 */ KNIGHT_CLOSE_CURTAIN_ACTION_0,
/* 1 */ KNIGHT_CLOSE_CURTAIN_ACTION_1,
/* 2 */ KNIGHT_CLOSE_CURTAIN_ACTION_2
} EnKnightCloseCurtainAction;
typedef enum KnightBodyPart {
/* 0 */ KNIGHT_BODYPART_JAW,
/* 1 */ KNIGHT_BODYPART_TORSO,
/* 2 */ KNIGHT_BODYPART_PELVIS,
/* 3 */ KNIGHT_BODYPART_LEFT_UPPER_ARM,
/* 4 */ KNIGHT_BODYPART_LEFT_FOREARM,
/* 5 */ KNIGHT_BODYPART_SHIELD,
/* 6 */ KNIGHT_BODYPART_RIGHT_UPPER_ARM,
/* 7 */ KNIGHT_BODYPART_RIGHT_FOREARM,
/* 8 */ KNIGHT_BODYPART_SWORD,
/* 9 */ KNIGHT_BODYPART_LEFT_LEG_UPPER,
/* 10 */ KNIGHT_BODYPART_LEFT_LEG_LOWER,
/* 11 */ KNIGHT_BODYPART_LEFT_FOOT,
/* 12 */ KNIGHT_BODYPART_RIGHT_LEG_UPPER,
/* 13 */ KNIGHT_BODYPART_RIGHT_LEG_LOWER,
/* 14 */ KNIGHT_BODYPART_RIGHT_FOOT,
/* 15 */ KNIGHT_BODYPART_MAX
} KnightBodyPart;
typedef struct EnKnight {
/* 0x000 */ Actor actor;
/* 0x144 */ s16 unk_144;
/* 0x146 */ char unk_146[0x2];
/* 0x148 */ u8 unk_148;
/* 0x149 */ char unk_149[0x8];
/* 0x151 */ u8 unk_151;
/* 0x152 */ char unk_152[0x1];
/* 0x153 */ u8 unk_153;
/* 0x154 */ u8 unk_154;
/* 0x155 */ char unk_155[0x2CB];
/* 0x144 */ u16 curtainsLightRayAngle;
/* 0x146 */ s16 randTimer;
/* 0x148 */ u8 subAction;
/* 0x14A */ s16 timers[3];
/* 0x150 */ UNK_TYPE1 unk_150;
/* 0x151 */ u8 inCurtainCutscene;
/* 0x152 */ u8 doBgChecks;
/* 0x153 */ u8 closeCurtainAction;
/* 0x154 */ u8 roomLightingState;
/* 0x156 */ s16 invincibilityTimer;
/* 0x158 */ s16 damageFlashTimer;
/* 0x15A */ s16 strafeTarget;
/* 0x15C */ s16 strafeMaxStep;
/* 0x15E */ s16 effectTimer;
/* 0x160 */ s16 breathAlpha;
/* 0x162 */ u8 isHeadless;
/* 0x164 */ Vec3f afterImageOffset;
/* 0x170 */ s16 pitchToPlayer;
/* 0x172 */ s16 yawToPlayer;
/* 0x174 */ s16 leftLegUpperRotation;
/* 0x176 */ s16 rightLegUpperRotation;
/* 0x178 */ s16 leftLegLowerRotation;
/* 0x17A */ s16 rightLegLowerRotation;
/* 0x17C */ f32 bodyAlpha;
/* 0x180 */ f32 shadowAlphaFactor;
/* 0x184 */ s16 neckYaw;
/* 0x186 */ s16 neckYawTarget;
/* 0x188 */ s16 neckRoll;
/* 0x18A */ s16 neckRollTarget;
/* 0x18C */ s16 neckRotationMaxStep;
/* 0x18E */ s16 neckRotationStepScale;
/* 0x190 */ u8 swordColliderActive;
/* 0x191 */ u8 shieldColliderActive;
/* 0x192 */ u8 canRetreat;
/* 0x193 */ u8 shieldingInvulnerabilityTimer;
/* 0x194 */ SkelAnime skelAnime;
/* 0x1D8 */ f32 animLastFrame;
/* 0x1DC */ Vec3f bodyPartsPos[15];
/* 0x290 */ u8 igosCurtainReaction;
/* 0x291 */ u8 lightRayDamageTimer;
/* 0x292 */ u8 retreatWhileShielding;
/* 0x294 */ f32 drawDmgEffScale;
/* 0x298 */ f32 drawDmgEffIceMeltingScale;
/* 0x29C */ f32 drawDmgEffAlpha;
/* 0x2A0 */ u8 drawDmgEffType;
/* 0x2A1 */ u8 drawDmgEffState;
/* 0x2A2 */ s16 drawDmgEffDuration;
/* 0x2A4 */ f32 animMovementX;
/* 0x2A8 */ f32 animMovementZ;
/* 0x2AC */ Vec3f feetPositions[2];
/* 0x2C4 */ Vec3s jointTable[KNIGHT_LIMB_MAX];
/* 0x372 */ Vec3s morphTable[KNIGHT_LIMB_MAX];
/* 0x420 */ EnKnightActionFunc actionFunc;
/* 0x424 */ char unk_424[0x25C];
/* 0x680 */ u8 unk_680;
/* 0x681 */ char unk_681[0x9];
/* 0x68A */ s16 unk_68A;
/* 0x68C */ char pad68C[0x48];
/* 0x424 */ EnKnightActionFunc prevActionFunc;
/* 0x428 */ s16 jawRotation;
/* 0x42C */ f32 jawRotationAmplitude;
/* 0x430 */ f32 jawRotationAmplitudeTarget;
/* 0x434 */ Vec3f breathBasePos;
/* 0x440 */ Vec3f retreatTowards;
/* 0x44C */ u8 blureState;
/* 0x450 */ f32 blureAlpha;
/* 0x454 */ Vec3f blureTranslation;
/* 0x460 */ Vec3f blureRotation;
/* 0x46C */ f32 swordScale;
/* 0x470 */ f32 shieldScale;
/* 0x474 */ f32 shieldLightReflectionScale;
/* 0x478 */ s16 shieldHitTimer;
/* 0x47C */ Vec3f shieldParticlesPos;
/* 0x488 */ ColliderCylinder headAttackCollider;
/* 0x4D4 */ ColliderJntSph swordCollider;
/* 0x4F4 */ ColliderJntSphElement swordColliderElements[1];
/* 0x534 */ ColliderJntSph shieldCollider;
/* 0x554 */ ColliderJntSphElement shieldColliderElements[1];
/* 0x594 */ ColliderJntSph bodyCollider;
/* 0x5B4 */ ColliderJntSphElement bodyColliderElements[2];
/* 0x634 */ ColliderCylinder headCollider;
/* 0x680 */ u8 inCurtainReaction;
/* 0x684 */ u32 csTimer;
/* 0x688 */ s16 csState;
/* 0x68A */ s16 subCamId;
/* 0x68C */ Vec3f subCamEye;
/* 0x698 */ Vec3f subCamAt;
/* 0x6A4 */ f32 csStepValue;
/* 0x6A8 */ UNK_TYPE4 unk_6A8;
/* 0x6AC */ s16 csPlayerYaw;
/* 0x6B0 */ f32 subCamFov;
/* 0x6B4 */ u16 walkSfx;
/* 0x6B6 */ u16 pauseSfx;
/* 0x6B8 */ u16 laughSfx;
/* 0x6BA */ UNK_TYPE2 unk_6BA; // unused sfx id space?
/* 0x6BC */ u16 attackSfx;
/* 0x6BE */ u16 damagedSfx;
/* 0x6C0 */ u16 defeatedSfx;
/* 0x6C2 */ u16 voiceSfx;
/* 0x6C4 */ u8 seenCaptainsHat;
/* 0x6C8 */ Vec3f projectedPos;
} EnKnight; // size = 0x6D4
#endif // Z_EN_KNIGHT_H

View File

@ -8892,101 +8892,101 @@
0x809B1AA0:("func_809B1AA0",),
0x809B1BE8:("ObjChikuwa_Update",),
0x809B1D90:("ObjChikuwa_Draw",),
0x809B20F0:("func_809B20F0",),
0x809B21F4:("func_809B21F4",),
0x809B22CC:("func_809B22CC",),
0x809B20F0:("EnKnight_EffectAdd",),
0x809B21F4:("EnKnight_SetColliderSphere",),
0x809B22CC:("EnKnight_SpawnDustAtFeet",),
0x809B2510:("EnKnight_Init",),
0x809B2DC0:("EnKnight_Destroy",),
0x809B2DD0:("func_809B2DD0",),
0x809B2F54:("func_809B2F54",),
0x809B316C:("func_809B316C",),
0x809B31E8:("func_809B31E8",),
0x809B329C:("func_809B329C",),
0x809B331C:("func_809B331C",),
0x809B3394:("func_809B3394",),
0x809B33F0:("func_809B33F0",),
0x809B35BC:("func_809B35BC",),
0x809B3618:("func_809B3618",),
0x809B37C8:("func_809B37C8",),
0x809B3834:("func_809B3834",),
0x809B389C:("func_809B389C",),
0x809B3958:("func_809B3958",),
0x809B3A7C:("func_809B3A7C",),
0x809B3B94:("func_809B3B94",),
0x809B3CD0:("func_809B3CD0",),
0x809B3DAC:("func_809B3DAC",),
0x809B3E9C:("func_809B3E9C",),
0x809B3F0C:("func_809B3F0C",),
0x809B4024:("func_809B4024",),
0x809B40E8:("func_809B40E8",),
0x809B41D8:("func_809B41D8",),
0x809B41F8:("func_809B41F8",),
0x809B42B8:("func_809B42B8",),
0x809B4308:("func_809B4308",),
0x809B47EC:("func_809B47EC",),
0x809B4880:("func_809B4880",),
0x809B4BFC:("func_809B4BFC",),
0x809B4C58:("func_809B4C58",),
0x809B4E84:("func_809B4E84",),
0x809B4ED8:("func_809B4ED8",),
0x809B4F90:("func_809B4F90",),
0x809B5058:("func_809B5058",),
0x809B51DC:("func_809B51DC",),
0x809B52E8:("func_809B52E8",),
0x809B5634:("func_809B5634",),
0x809B5698:("func_809B5698",),
0x809B58D4:("func_809B58D4",),
0x809B592C:("func_809B592C",),
0x809B59FC:("func_809B59FC",),
0x809B5B08:("func_809B5B08",),
0x809B5D38:("func_809B5D38",),
0x809B5D54:("func_809B5D54",),
0x809B5E90:("func_809B5E90",),
0x809B5ED0:("func_809B5ED0",),
0x809B5FA8:("func_809B5FA8",),
0x809B601C:("func_809B601C",),
0x809B631C:("func_809B631C",),
0x809B638C:("func_809B638C",),
0x809B6528:("func_809B6528",),
0x809B6574:("func_809B6574",),
0x809B6764:("func_809B6764",),
0x809B6C04:("func_809B6C04",),
0x809B6C54:("func_809B6C54",),
0x809B6D38:("func_809B6D38",),
0x809B6D94:("func_809B6D94",),
0x809B6EC8:("func_809B6EC8",),
0x809B6F40:("func_809B6F40",),
0x809B7190:("func_809B7190",),
0x809B71DC:("func_809B71DC",),
0x809B7708:("func_809B7708",),
0x809B7778:("func_809B7778",),
0x809B78A4:("func_809B78A4",),
0x809B7950:("func_809B7950",),
0x809B842C:("func_809B842C",),
0x809B8458:("func_809B8458",),
0x809B9A18:("func_809B9A18",),
0x809B9D24:("func_809B9D24",),
0x809B9E00:("func_809B9E00",),
0x809B9F8C:("func_809B9F8C",),
0x809BA058:("func_809BA058",),
0x809BA0CC:("func_809BA0CC",),
0x809BA940:("func_809BA940",),
0x809BA978:("func_809BA978",),
0x809B2DD0:("EnKnight_CheckRetreat",),
0x809B2F54:("EnKnight_SelectAttack",),
0x809B316C:("EnKnight_IsFacingPlayer",),
0x809B31E8:("EnKnight_IsFacingPlayerFocus",),
0x809B329C:("EnKnight_SetupTelegraphHeavyAttack",),
0x809B331C:("EnKnight_TelegraphHeavyAttack",),
0x809B3394:("EnKnight_SetupHeavyAttack",),
0x809B33F0:("EnKnight_HeavyAttack",),
0x809B35BC:("EnKnight_SetupLowSwing",),
0x809B3618:("EnKnight_LowSwing",),
0x809B37C8:("EnKnight_SetupLowSwingEnd",),
0x809B3834:("EnKnight_LowSwingEnd",),
0x809B389C:("EnKnight_SetupBasicSwing",),
0x809B3958:("EnKnight_BasicSwing",),
0x809B3A7C:("EnKnight_SetupJumpAttack",),
0x809B3B94:("EnKnight_JumpAttack",),
0x809B3CD0:("EnKnight_SetupBlocking",),
0x809B3DAC:("EnKnight_Blocking",),
0x809B3E9C:("EnKnight_SetupWait",),
0x809B3F0C:("EnKnight_Wait",),
0x809B4024:("EnKnight_SetupStrafe",),
0x809B40E8:("EnKnight_Strafe",),
0x809B41D8:("EnKnight_SetupTurnToPlayer",),
0x809B41F8:("EnKnight_TurnToPlayer",),
0x809B42B8:("EnKnight_SetupApproachPlayer",),
0x809B4308:("EnKnight_ApproachPlayer",),
0x809B47EC:("EnKnight_SetupRetreat",),
0x809B4880:("EnKnight_Retreat",),
0x809B4BFC:("EnKnight_SetupGetBackUp",),
0x809B4C58:("EnKnight_GetBackUp",),
0x809B4E84:("EnKnight_SetupStunned",),
0x809B4ED8:("EnKnight_Stunned",),
0x809B4F90:("EnKnight_SetupRecoilFromDamage",),
0x809B5058:("EnKnight_RecoilFromDamage",),
0x809B51DC:("EnKnight_SetupFallOver",),
0x809B52E8:("EnKnight_FallOver",),
0x809B5634:("EnKnight_SetupDie",),
0x809B5698:("EnKnight_Die",),
0x809B58D4:("EnKnight_Dead",),
0x809B592C:("EnKnight_SetupJumpBackwardsKnight",),
0x809B59FC:("EnKnight_SetupJumpBackwardsIgos",),
0x809B5B08:("EnKnight_JumpBackwards",),
0x809B5D38:("EnKnight_SetupIgosReactToCurtains",),
0x809B5D54:("EnKnight_IgosReactToCurtains",),
0x809B5E90:("EnKnight_SetupLookAtOther",),
0x809B5ED0:("EnKnight_LookAtOther",),
0x809B5FA8:("EnKnight_SetupMarch",),
0x809B601C:("EnKnight_March",),
0x809B631C:("EnKnight_SetupIntroCutscene",),
0x809B638C:("EnKnight_SpawnBreathEffects",),
0x809B6528:("EnKnight_SetupIgosSitting",),
0x809B6574:("EnKnight_SpawnDust",),
0x809B6764:("EnKnight_IgosSitting",),
0x809B6C04:("EnKnight_SetupDetachHead",),
0x809B6C54:("EnKnight_DetachHead",),
0x809B6D38:("EnKnight_SetupFlyingHeadDone",),
0x809B6D94:("EnKnight_FlyingHeadDone",),
0x809B6EC8:("EnKnight_SetupBreathAttack",),
0x809B6F40:("EnKnight_BreathAttack",),
0x809B7190:("EnKnight_SetupIgosStandCS",),
0x809B71DC:("EnKnight_IgosStandCS",),
0x809B7708:("EnKnight_SetupKnightCaptainsHatCS",),
0x809B7778:("EnKnight_KnightCaptainsHatCS",),
0x809B78A4:("EnKnight_SetupCaptainsHatCS",),
0x809B7950:("EnKnight_CaptainsHatCS",),
0x809B842C:("EnKnight_WaitIntroCutscene",),
0x809B8458:("EnKnight_IntroCutscene",),
0x809B9A18:("EnKnight_UpdateDamage",),
0x809B9D24:("EnKnight_UpdateDamageFallenOver",),
0x809B9E00:("EnKnight_SpawnIceShards",),
0x809B9F8C:("EnKnight_UpdateDamageFlyingHead",),
0x809BA058:("EnKnight_SetupFlyingHead",),
0x809BA0CC:("EnKnight_FlyingHead",),
0x809BA940:("EnKnight_SetupFlyingHeadAttack",),
0x809BA978:("EnKnight_FlyingHeadAttack",),
0x809BB0BC:("EnKnight_Update",),
0x809BC2C4:("func_809BC2C4",),
0x809BC67C:("func_809BC67C",),
0x809BC720:("func_809BC720",),
0x809BC8B4:("func_809BC8B4",),
0x809BCA80:("func_809BCA80",),
0x809BCAD8:("func_809BCAD8",),
0x809BCB54:("func_809BCB54",),
0x809BCB78:("func_809BCB78",),
0x809BC2C4:("EnKnight_DrawEffectBlure",),
0x809BC67C:("EnKnight_OverrideLimbDrawHead",),
0x809BC720:("EnKnight_OverrideLimbDraw",),
0x809BC8B4:("EnKnight_PostLimbDraw",),
0x809BCA80:("EnKnight_PostLimbDrawHead",),
0x809BCAD8:("EnKnight_TransformLimbDraw",),
0x809BCB54:("EnKnight_BuildEmptyDL",),
0x809BCB78:("EnKnight_BuildXluMaterialDL",),
0x809BCC2C:("EnKnight_Draw",),
0x809BD1AC:("func_809BD1AC",),
0x809BD260:("func_809BD260",),
0x809BD29C:("func_809BD29C",),
0x809BD490:("func_809BD490",),
0x809BD858:("func_809BD858",),
0x809BD1AC:("EnKnight_UpdateAfterImage",),
0x809BD260:("EnKnight_OverrideLimbDrawAfterImage",),
0x809BD29C:("EnKnight_DrawAfterImage",),
0x809BD490:("EnKnight_UpdateEffects",),
0x809BD858:("EnKnight_DrawEffects",),
0x809C0760:("EnWarptag_Init",),
0x809C0824:("EnWarptag_Destroy",),
0x809C085C:("EnWarpTag_CheckDungeonKeepObject",),
@ -9420,19 +9420,19 @@
0x809F14AC:("Boss05_Fragment_OverrideLimbDraw",),
0x809F1550:("Boss05_Fragment_PostLimbDraw",),
0x809F159C:("Boss05_Draw",),
0x809F2120:("func_809F2120",),
0x809F2140:("func_809F2140",),
0x809F2120:("Boss06_InitRand",),
0x809F2140:("Boss06_RandZeroOne",),
0x809F2268:("Boss06_Init",),
0x809F23BC:("Boss06_Destroy",),
0x809F23CC:("func_809F23CC",),
0x809F24A8:("func_809F24A8",),
0x809F24C8:("func_809F24C8",),
0x809F2B64:("func_809F2B64",),
0x809F2C44:("func_809F2C44",),
0x809F2E14:("func_809F2E14",),
0x809F2E34:("func_809F2E34",),
0x809F2ED0:("func_809F2ED0",),
0x809F2EE8:("func_809F2EE8",),
0x809F23CC:("Boss06_UpdateDamage",),
0x809F24A8:("Boss06_SetupCurtainBurningCutscene",),
0x809F24C8:("Boss06_CurtainBurningCutscene",),
0x809F2B64:("Boss06_SetupCloseCurtain",),
0x809F2C44:("Boss06_CloseCurtain",),
0x809F2E14:("Boss06_SetupCurtainClosed",),
0x809F2E34:("Boss06_CurtainClosed",),
0x809F2ED0:("Boss06_SetupCurtainDestroyed",),
0x809F2EE8:("Boss06_CurtainDestroyed",),
0x809F2F0C:("Boss06_Update",),
0x809F334C:("Boss06_Draw",),
0x809F4980:("func_809F4980",),

View File

@ -9456,45 +9456,45 @@
0x809B201C:("D_809B201C","f32","",0x4),
0x809B2020:("D_809B2020","f32","",0x4),
0x809B2024:("D_809B2024","f32","",0x4),
0x809BDAF0:("D_809BDAF0","UNK_TYPE4","",0x4),
0x809BDAFC:("D_809BDAFC","UNK_TYPE1","",0x1),
0x809BDB00:("D_809BDB00","UNK_TYPE1","",0x1),
0x809BDB04:("D_809BDB04","UNK_TYPE1","",0x1),
0x809BDB24:("D_809BDB24","UNK_TYPE1","",0x1),
0x809BDB44:("D_809BDB44","UNK_TYPE1","",0x1),
0x809BDB68:("D_809BDB68","UNK_TYPE1","",0x1),
0x809BDB8C:("D_809BDB8C","UNK_TYPE1","",0x1),
0x809BDB9C:("D_809BDB9C","UNK_TYPE1","",0x1),
0x809BDBAC:("D_809BDBAC","UNK_TYPE1","",0x1),
0x809BDBD0:("D_809BDBD0","UNK_TYPE1","",0x1),
0x809BDBE0:("D_809BDBE0","UNK_TYPE1","",0x1),
0x809BDC28:("D_809BDC28","UNK_TYPE1","",0x1),
0x809BDC38:("D_809BDC38","UNK_TYPE1","",0x1),
0x809BDC64:("D_809BDC64","UNK_TYPE1","",0x1),
0x809BDC90:("D_809BDC90","UNK_TYPE1","",0x1),
0x809BDC94:("D_809BDC94","UNK_TYPE1","",0x1),
0x809BDAF0:("sZeroVec","UNK_TYPE4","",0x4),
0x809BDAFC:("sSpawnIndex","UNK_TYPE1","",0x1),
0x809BDB00:("sKnightMusicStartTimer","UNK_TYPE1","",0x1),
0x809BDB04:("sDamageTableStanding","UNK_TYPE1","",0x1),
0x809BDB24:("sDamageTableFallenOver","UNK_TYPE1","",0x1),
0x809BDB44:("sKnightSwordColliderJntSphElementsInit","UNK_TYPE1","",0x1),
0x809BDB68:("sIgosSwordColliderJntSphElementsInit","UNK_TYPE1","",0x1),
0x809BDB8C:("sKnightSwordColliderJntSphInit","UNK_TYPE1","",0x1),
0x809BDB9C:("sIgosSwordColliderJntSphInit","UNK_TYPE1","",0x1),
0x809BDBAC:("sShieldColliderJntSphElementsInit","UNK_TYPE1","",0x1),
0x809BDBD0:("sShieldColliderJntSphInit","UNK_TYPE1","",0x1),
0x809BDBE0:("sBodyColliderJntSphElementsInit","UNK_TYPE1","",0x1),
0x809BDC28:("sBodyColliderJntSphInit","UNK_TYPE1","",0x1),
0x809BDC38:("sHeadAttackColliderCylinderInit","UNK_TYPE1","",0x1),
0x809BDC64:("sHeadColliderCylinderInit","UNK_TYPE1","",0x1),
0x809BDC90:("sDustPrimColor","UNK_TYPE1","",0x1),
0x809BDC94:("sDustEnvColor","UNK_TYPE1","",0x1),
0x809BDC98:("En_Knight_InitVars","UNK_TYPE1","",0x1),
0x809BDCB8:("D_809BDCB8","UNK_TYPE1","",0x1),
0x809BDCC0:("D_809BDCC0","UNK_TYPE1","",0x1),
0x809BDCC8:("D_809BDCC8","UNK_TYPE1","",0x1),
0x809BDCD0:("D_809BDCD0","UNK_TYPE1","",0x1),
0x809BDCD8:("D_809BDCD8","UNK_TYPE1","",0x1),
0x809BDCE0:("D_809BDCE0","UNK_TYPE1","",0x1),
0x809BDCE8:("D_809BDCE8","UNK_TYPE1","",0x1),
0x809BDCF0:("D_809BDCF0","UNK_TYPE1","",0x1),
0x809BDCF4:("D_809BDCF4","UNK_TYPE1","",0x1),
0x809BDCF8:("D_809BDCF8","UNK_TYPE1","",0x1),
0x809BDCFC:("D_809BDCFC","UNK_TYPE1","",0x1),
0x809BDD00:("D_809BDD00","UNK_TYPE1","",0x1),
0x809BDD0C:("D_809BDD0C","UNK_TYPE1","",0x1),
0x809BDD18:("D_809BDD18","UNK_TYPE1","",0x1),
0x809BDD24:("D_809BDD24","UNK_TYPE1","",0x1),
0x809BDD30:("D_809BDD30","UNK_TYPE1","",0x1),
0x809BDD3C:("D_809BDD3C","UNK_TYPE1","",0x1),
0x809BDD5C:("D_809BDD5C","UNK_TYPE1","",0x1),
0x809BDD68:("D_809BDD68","UNK_TYPE1","",0x1),
0x809BDD74:("D_809BDD74","UNK_TYPE1","",0x1),
0x809BDD80:("D_809BDD80","UNK_TYPE1","",0x1),
0x809BDCB8:("sKnightWalkSfx","UNK_TYPE1","",0x1),
0x809BDCC0:("sKnightPauseSfx","UNK_TYPE1","",0x1),
0x809BDCC8:("sKnightLaughSfx","UNK_TYPE1","",0x1),
0x809BDCD0:("sKnightAttackSfx","UNK_TYPE1","",0x1),
0x809BDCD8:("sKnightDamagedSfx","UNK_TYPE1","",0x1),
0x809BDCE0:("sKnightDefeatedSfx","UNK_TYPE1","",0x1),
0x809BDCE8:("sKnightVoiceSfx","UNK_TYPE1","",0x1),
0x809BDCF0:("sPrimColor","UNK_TYPE1","",0x1),
0x809BDCF4:("sEnvColor","UNK_TYPE1","",0x1),
0x809BDCF8:("sPrimColor","UNK_TYPE1","",0x1),
0x809BDCFC:("sEnvColor","UNK_TYPE1","",0x1),
0x809BDD00:("sAccel","UNK_TYPE1","",0x1),
0x809BDD0C:("sFocusPosModelOffset","UNK_TYPE1","",0x1),
0x809BDD18:("sShieldColliderModelOffset","UNK_TYPE1","",0x1),
0x809BDD24:("sShieldParticlesModelOffset","UNK_TYPE1","",0x1),
0x809BDD30:("sSwordColliderModelOffset","UNK_TYPE1","",0x1),
0x809BDD3C:("sLimbToBodyParts","UNK_TYPE1","",0x1),
0x809BDD5C:("sBreathBaseModelOffset","UNK_TYPE1","",0x1),
0x809BDD68:("sBodyCollider0ModelOffset","UNK_TYPE1","",0x1),
0x809BDD74:("sBodyCollider1ModelOffset","UNK_TYPE1","",0x1),
0x809BDD80:("sFocusPosModelOffset","UNK_TYPE1","",0x1),
0x809BDD90:("D_809BDD90","f32","",0x4),
0x809BDD94:("D_809BDD94","f32","",0x4),
0x809BDD98:("D_809BDD98","f32","",0x4),
@ -9622,12 +9622,12 @@
0x809BE0B4:("D_809BE0B4","f32","",0x4),
0x809BE0B8:("D_809BE0B8","f32","",0x4),
0x809BE0BC:("D_809BE0BC","f32","",0x4),
0x809BEFD0:("D_809BEFD0","UNK_TYPE4","",0x4),
0x809BEFD4:("D_809BEFD4","UNK_TYPE4","",0x4),
0x809BEFD8:("D_809BEFD8","UNK_TYPE4","",0x4),
0x809BEFDC:("D_809BEFDC","UNK_TYPE4","",0x4),
0x809BEFE0:("D_809BEFE0","UNK_TYPE4","",0x4),
0x809BEFE4:("D_809BEFE4","UNK_TYPE4","",0x4),
0x809BEFD0:("sIgosInstance","UNK_TYPE4","",0x4),
0x809BEFD4:("sThinKnightInstance","UNK_TYPE4","",0x4),
0x809BEFD8:("sWideKnightInstance","UNK_TYPE4","",0x4),
0x809BEFDC:("sIgosHeadInstance","UNK_TYPE4","",0x4),
0x809BEFE0:("sTargetKnight","UNK_TYPE4","",0x4),
0x809BEFE4:("sMirRayInstance","UNK_TYPE4","",0x4),
0x809BEFE8:("D_809BEFE8","UNK_TYPE1","",0x1),
0x809C014A:("D_809C014A","UNK_TYPE1","",0x1),
0x809C0758:("D_809C0758","UNK_TYPE1","",0x1),
@ -10178,11 +10178,11 @@
0x809F416C:("D_809F416C","f32","",0x4),
0x809F4170:("D_809F4170","f32","",0x4),
0x809F4174:("D_809F4174","f32","",0x4),
0x809F4370:("D_809F4370","UNK_TYPE4","",0x4),
0x809F4970:("D_809F4970","UNK_TYPE4","",0x4),
0x809F4974:("D_809F4974","UNK_TYPE4","",0x4),
0x809F4978:("D_809F4978","UNK_TYPE4","",0x4),
0x809F497C:("D_809F497C","UNK_TYPE4","",0x4),
0x809F4370:("sCurtainFireEffectPositions","UNK_TYPE4","",0x4),
0x809F4970:("sIgosInstance","UNK_TYPE4","",0x4),
0x809F4974:("sBoss06Seed1","UNK_TYPE4","",0x4),
0x809F4978:("sBoss06Seed2","UNK_TYPE4","",0x4),
0x809F497C:("sBoss06Seed3","UNK_TYPE4","",0x4),
0x80A07950:("D_80A07950","UNK_TYPE2","",0x2),
0x80A07952:("D_80A07952","UNK_TYPE2","",0x2),
0x80A07954:("D_80A07954","UNK_TYPE2","",0x2),