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. under the assumption that Grezzo were probably the ones who added the qualifier to the names.
--> -->
<File Name="object_knight" Segment="6"> <File Name="object_knight" Segment="6">
<Animation Name="object_knight_Anim_0005A8" Offset="0x5A8" /> <!-- Original name is probably "nsk_aramaD" --> <Animation Name="gKnightIgosCurtainReactionShockedAnim" Offset="0x5A8" /> <!-- Original name is probably "nsk_aramaD" -->
<Animation Name="object_knight_Anim_0009E0" Offset="0x9E0" /> <!-- Original name is probably "nsk_araraD" --> <Animation Name="gKnightIgosCurtainReactionAngryAnim" 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="gKnightDamagedBackAnim" 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="gKnightFallBackwardsAnim" 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="gKnightJumpBackAnim" 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="gKnightIgosRemoveHeadAnim" Offset="0x3008" /> <!-- Original name is probably "nsk_bunri" -->
<Animation Name="object_knight_Anim_0031F0" Offset="0x31F0" /> <!-- Original name is probably "nsk_defend" --> <Animation Name="gKnightFastBlockStandingAnim" 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="gKnightFastWalkShieldingAnim" 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="gKnightIdleAnim" 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="gKnightSlowWalkShieldingAnim" 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="gKnightDamagedFrontAnim" 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="gKnightFallForwardsAnim" 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="gKnightIgosShrugAnim" Offset="0x5E78" /> <!-- Original name is probably "nsk_furufuruD" -->
<Animation Name="object_knight_Anim_006754" Offset="0x6754" /> <!-- Original name is probably "nsk_gabaBD" --> <Animation Name="gKnightCaptainsHatCSIgosShockedStandingAnim" Offset="0x6754" /> <!-- Original name is probably "nsk_gabaBD" -->
<Animation Name="object_knight_Anim_006EF8" Offset="0x6EF8" /> <!-- Original name is probably "nsk_gabaD" --> <Animation Name="gKnightCaptainsHatCSIgosShockedSittingAnim" Offset="0x6EF8" /> <!-- Original name is probably "nsk_gabaD" -->
<Animation Name="object_knight_Anim_0079D4" Offset="0x79D4" /> <!-- Original name is probably "nsk_gattai" --> <Animation Name="gKnightIgosPutHeadBackOnAnim" Offset="0x79D4" /> <!-- Original name is probably "nsk_gattai" -->
<Animation Name="object_knight_Anim_008390" Offset="0x8390" /> <!-- Original name is probably "nsk_goD" --> <Animation Name="gKnightIgosLaughAnim" Offset="0x8390" /> <!-- Original name is probably "nsk_goD" -->
<Animation Name="object_knight_Anim_008524" Offset="0x8524" /> <!-- Original name is probably "nsk_guardA" --> <Animation Name="gKnightFastBlockSittingAnim" Offset="0x8524" /> <!-- Original name is probably "nsk_guardA" -->
<Animation Name="object_knight_Anim_0089E4" Offset="0x89E4" /> <!-- Original name is probably "nsk_guardB" --> <Animation Name="gKnightEndBlockAndSitAnim" Offset="0x89E4" /> <!-- Original name is probably "nsk_guardB" -->
<Animation Name="object_knight_Anim_008D80" Offset="0x8D80" /> <!-- Original name is probably "nsk_haiteru" --> <Animation Name="gKnightIgosBreathAttackAnim" Offset="0x8D80" /> <!-- Original name is probably "nsk_haiteru" -->
<Animation Name="object_knight_Anim_009538" Offset="0x9538" /> <!-- Original name is probably "nsk_haku" --> <Animation Name="gKnightIgosBreathAttackStartAnim" Offset="0x9538" /> <!-- Original name is probably "nsk_haku" -->
<Animation Name="object_knight_Anim_009D8C" Offset="0x9D8C" /> <!-- Original name is probably "nsk_jakinD" --> <Animation Name="gKnightIgosStandAndDrawAnim" Offset="0x9D8C" /> <!-- Original name is probably "nsk_jakinD" -->
<Animation Name="object_knight_Anim_00A530" Offset="0xA530" /> <!-- Original name is probably "nsk_jakinTOsekiD" --> <Animation Name="gKnightIgosSitDownAnim" Offset="0xA530" /> <!-- Original name is probably "nsk_jakinTOsekiD" -->
<Animation Name="object_knight_Anim_00A88C" Offset="0xA88C" /> <!-- Original name is probably "nsk_jidandaD" --> <Animation Name="gKnightCaptainsHatCSIgosSteppingAnim" Offset="0xA88C" /> <!-- Original name is probably "nsk_jidandaD" -->
<Animation Name="object_knight_Anim_00AB68" Offset="0xAB68" /> <!-- Original name is probably "nsk_jump" --> <Animation Name="gKnightJumpAnim" 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="gKnightJumpAttackBeginAnim" 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="gKnightJumpAttackEndAnim" 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="gKnightLeftSwingAnim" Offset="0xBCF4" /> <!-- Original name is probably "nsk_koteL" -->
<Animation Name="object_knight_Anim_00C384" Offset="0xC384" /> <!-- Original name is probably "nsk_koteR" --> <Animation Name="gKnightRightSwingAnim" Offset="0xC384" /> <!-- Original name is probably "nsk_koteR" -->
<Animation Name="object_knight_Anim_00C7F0" Offset="0xC7F0" /> <!-- Original name is probably "nsk_kunekuneaD" --> <Animation Name="gKnightCaptainsHatCSIgosShockedAnim" Offset="0xC7F0" /> <!-- Original name is probably "nsk_kunekuneaD" -->
<Animation Name="object_knight_Anim_00CDE0" Offset="0xCDE0" /> <!-- Original name is probably "nsk_laugh" --> <Animation Name="gKnightLaugh1Anim" Offset="0xCDE0" /> <!-- Original name is probably "nsk_laugh" -->
<Animation Name="object_knight_Anim_00D870" Offset="0xD870" /> <!-- Original name is probably "nsk_laughD" --> <Animation Name="gKnightLaugh2Anim" Offset="0xD870" /> <!-- Original name is probably "nsk_laughD" -->
<Animation Name="object_knight_Anim_00DDCC" Offset="0xDDCC" /> <!-- Original name is probably "nsk_march" --> <Animation Name="gKnightMarchAnim" Offset="0xDDCC" /> <!-- Original name is probably "nsk_march" -->
<Animation Name="object_knight_Anim_00E15C" Offset="0xE15C" /> <!-- Original name is probably "nsk_modoru" --> <Animation Name="gKnightIgosBreathAttackStopAnim" Offset="0xE15C" /> <!-- Original name is probably "nsk_modoru" -->
<Animation Name="object_knight_Anim_00E45C" Offset="0xE45C" /> <!-- Original name is probably "nsk_muzumuzuwalk" --> <Animation Name="gKnightStruckByLightRayAnim" Offset="0xE45C" /> <!-- Original name is probably "nsk_muzumuzuwalk" -->
<Animation Name="object_knight_Anim_00E7F4" Offset="0xE7F4" /> <!-- Original name is probably "nsk_nunuBD" --> <Animation Name="gKnightCaptainsHatCSBeginStandingAnim" Offset="0xE7F4" /> <!-- Original name is probably "nsk_nunuBD" -->
<Animation Name="object_knight_Anim_00EA90" Offset="0xEA90" /> <!-- Original name is probably "nsk_nunuD" --> <Animation Name="gKnightCaptainsHatCSBeginSittingAnim" 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="gKnightStrafeAnim" 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="gKnightUppercutAnim" Offset="0xF90C" /> <!-- Original name is probably "nsk_sonicgiri" -->
<Animation Name="object_knight_Anim_00FC78" Offset="0xFC78" /> <!-- Original name is probably "nsk_suwariwaitD" --> <Animation Name="gKnightIgosSittingAnim" Offset="0xFC78" /> <!-- Original name is probably "nsk_suwariwaitD" -->
<Animation Name="object_knight_Anim_01024C" Offset="0x1024C" /> <!-- Original name is probably "nsk_suwaru02D" --> <Animation Name="gKnightCaptainsHatCSSitBackDownAnim" Offset="0x1024C" /> <!-- Original name is probably "nsk_suwaru02D" -->
<Animation Name="object_knight_Anim_010E98" Offset="0x10E98" /> <!-- Original name is probably "nsk_suwaruD" --> <Animation Name="gKnightIntroSitDownAnim" Offset="0x10E98" /> <!-- Original name is probably "nsk_suwaruD" -->
<Animation Name="object_knight_Anim_011298" Offset="0x11298" /> <!-- Original name is probably "nsk_tategiri" --> <Animation Name="gKnightHeavyAttackAnim" Offset="0x11298" /> <!-- Original name is probably "nsk_tategiri" -->
<Animation Name="object_knight_Anim_011AAC" Offset="0x11AAC" /> <!-- Original name is probably "nsk_tategiri_kaburu" --> <Animation Name="gKnightBeginTelegraphHeavyAttackAnim" Offset="0x11AAC" /> <!-- Original name is probably "nsk_tategiri_kaburu" -->
<DList Name="object_knight_DL_012400" Offset="0x12400" /> <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_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_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_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" /> <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_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" /> <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_0153E0" Offset="0x153E0" />
<DList Name="object_knight_DL_0154B0" Offset="0x154B0" /> <DList Name="object_knight_DL_0154B0" Offset="0x154B0" />
<DList Name="object_knight_DL_0155A0" Offset="0x155A0" /> <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_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_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" /> <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="gKnightBlureState2DL" Offset="0x188F8" />
<DList Name="object_knight_DL_0189F0" Offset="0x189F0" /> <DList Name="gKnightBlureState1DL" Offset="0x189F0" />
<DList Name="object_knight_DL_018AF0" Offset="0x18AF0" /> <DList Name="gKnightBlureState0DL" Offset="0x18AF0" />
<TextureAnimation Name="object_knight_Matanimheader_018BC4" Offset="0x18BC4" /> <TextureAnimation Name="gKnightBlureTexAnim" Offset="0x18BC4" />
<Array Name="object_knight_Vtx_018BD0" Count="18" Offset="0x18BD0"> <Array Name="gIkanaThroneRoomLightRayVtx" Count="18" Offset="0x18BD0">
<Vtx/> <Vtx/>
</Array> </Array>
<DList Name="object_knight_DL_018CF0" Offset="0x18CF0" /> <!-- Original name is "w2_hikari_naname_modelT" --> <DList Name="gIkanaThroneRoomLightRayDL" 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="gIkanaThroneRoomLightOnFloorDL" Offset="0x18DE0" /> <!-- Original name is "w2_hikari_naname2_modelT" -->
<DList Name="object_knight_DL_018E50" Offset="0x18E50" /> <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_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" /> <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_0193A8" Offset="0x193A8" />
<DList Name="object_knight_DL_0193B0" Offset="0x193B0" /> <!-- Original name is "w2_ikn_katen_model" --> <DList Name="gIkanaThroneRoomCurtainDL" 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_TLUT_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" /> <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_01D380" Offset="0x1D380" />
<DList Name="object_knight_DL_01D4C0" Offset="0x1D4C0" /> <DList Name="object_knight_DL_01D4C0" Offset="0x1D4C0" />
<DList Name="object_knight_DL_01D650" Offset="0x1D650" /> <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_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_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" /> <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_01FFE8" Type="Standard" EnumName="IGOS_LIMB_ROOT" Offset="0x1FFE8" />
<Limb Name="object_knight_Standardlimb_01FFF4" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_02" Offset="0x1FFF4" /> <Limb Name="object_knight_Standardlimb_01FFF4" Type="Standard" EnumName="IGOS_LIMB_SPINE_BASE" Offset="0x1FFF4" />
<Limb Name="object_knight_Standardlimb_020000" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_03" Offset="0x20000" /> <Limb Name="object_knight_Standardlimb_020000" Type="Standard" EnumName="IGOS_LIMB_SPINE_UPPER" Offset="0x20000" />
<Limb Name="object_knight_Standardlimb_02000C" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_04" Offset="0x2000C" /> <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="OBJECT_KNIGHT_1_LIMB_05" Offset="0x20018" /> <Limb Name="object_knight_Standardlimb_020018" Type="Standard" EnumName="IGOS_LIMB_LEFT_FOREARM" Offset="0x20018" />
<Limb Name="object_knight_Standardlimb_020024" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_06" Offset="0x20024" /> <Limb Name="object_knight_Standardlimb_020024" Type="Standard" EnumName="IGOS_LIMB_SHIELD" Offset="0x20024" />
<Limb Name="object_knight_Standardlimb_020030" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_07" Offset="0x20030" /> <Limb Name="object_knight_Standardlimb_020030" Type="Standard" EnumName="IGOS_LIMB_LEFT_HAND" Offset="0x20030" />
<Limb Name="object_knight_Standardlimb_02003C" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_08" Offset="0x2003C" /> <Limb Name="object_knight_Standardlimb_02003C" Type="Standard" EnumName="IGOS_LIMB_LEFT_SHOULDER" Offset="0x2003C" />
<Limb Name="object_knight_Standardlimb_020048" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_09" Offset="0x20048" /> <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="OBJECT_KNIGHT_1_LIMB_0A" Offset="0x20054" /> <Limb Name="object_knight_Standardlimb_020054" Type="Standard" EnumName="IGOS_LIMB_RIGHT_FOREARM" Offset="0x20054" />
<Limb Name="object_knight_Standardlimb_020060" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0B" Offset="0x20060" /> <Limb Name="object_knight_Standardlimb_020060" Type="Standard" EnumName="IGOS_LIMB_SWORD" Offset="0x20060" />
<Limb Name="object_knight_Standardlimb_02006C" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0C" Offset="0x2006C" /> <Limb Name="object_knight_Standardlimb_02006C" Type="Standard" EnumName="IGOS_LIMB_RIGHT_HAND" Offset="0x2006C" />
<Limb Name="object_knight_Standardlimb_020078" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0D" Offset="0x20078" /> <Limb Name="object_knight_Standardlimb_020078" Type="Standard" EnumName="IGOS_LIMB_RIGHT_SHOULDER" Offset="0x20078" />
<Limb Name="object_knight_Standardlimb_020084" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0E" Offset="0x20084" /> <Limb Name="object_knight_Standardlimb_020084" Type="Standard" EnumName="IGOS_LIMB_COLLAR" Offset="0x20084" />
<Limb Name="object_knight_Standardlimb_020090" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_0F" Offset="0x20090" /> <Limb Name="object_knight_Standardlimb_020090" Type="Standard" EnumName="IGOS_LIMB_NECK" Offset="0x20090" />
<Limb Name="object_knight_Standardlimb_02009C" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_10" Offset="0x2009C" /> <Limb Name="object_knight_Standardlimb_02009C" Type="Standard" EnumName="IGOS_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_0200A8" Type="Standard" EnumName="IGOS_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_0200B4" Type="Standard" EnumName="IGOS_LIMB_JAW" Offset="0x200B4" />
<Limb Name="object_knight_Standardlimb_0200C0" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_13" Offset="0x200C0" /> <Limb Name="object_knight_Standardlimb_0200C0" Type="Standard" EnumName="IGOS_LIMB_HEAD" Offset="0x200C0" />
<Limb Name="object_knight_Standardlimb_0200CC" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_14" Offset="0x200CC" /> <Limb Name="object_knight_Standardlimb_0200CC" Type="Standard" EnumName="IGOS_LIMB_TORSO" Offset="0x200CC" />
<Limb Name="object_knight_Standardlimb_0200D8" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_15" Offset="0x200D8" /> <Limb Name="object_knight_Standardlimb_0200D8" Type="Standard" EnumName="IGOS_LIMB_PELVIS" Offset="0x200D8" />
<Limb Name="object_knight_Standardlimb_0200E4" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_16" Offset="0x200E4" /> <Limb Name="object_knight_Standardlimb_0200E4" Type="Standard" EnumName="IGOS_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_0200F0" Type="Standard" EnumName="IGOS_LIMB_LEFT_LEG_UPPER" Offset="0x200F0" />
<Limb Name="object_knight_Standardlimb_0200FC" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_18" Offset="0x200FC" /> <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="OBJECT_KNIGHT_1_LIMB_19" Offset="0x20108" /> <Limb Name="object_knight_Standardlimb_020108" Type="Standard" EnumName="IGOS_LIMB_LEFT_FOOT" Offset="0x20108" />
<Limb Name="object_knight_Standardlimb_020114" Type="Standard" EnumName="OBJECT_KNIGHT_1_LIMB_1A" Offset="0x20114" /> <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="OBJECT_KNIGHT_1_LIMB_1B" Offset="0x20120" /> <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="OBJECT_KNIGHT_1_LIMB_1C" Offset="0x2012C" /> <Limb Name="object_knight_Standardlimb_02012C" Type="Standard" EnumName="IGOS_LIMB_RIGHT_FOOT" 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" /> <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="OBJECT_KNIGHT_2_LIMB_01" Offset="0x201B4" /> <Limb Name="object_knight_Standardlimb_0201B4" Type="Standard" EnumName="KNIGHT_LIMB_ROOT" Offset="0x201B4" />
<Limb Name="object_knight_Standardlimb_0201C0" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_02" Offset="0x201C0" /> <Limb Name="object_knight_Standardlimb_0201C0" Type="Standard" EnumName="KNIGHT_LIMB_SPINE_BASE" Offset="0x201C0" />
<Limb Name="object_knight_Standardlimb_0201CC" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_03" Offset="0x201CC" /> <Limb Name="object_knight_Standardlimb_0201CC" Type="Standard" EnumName="KNIGHT_LIMB_SPINE_UPPER" Offset="0x201CC" />
<Limb Name="object_knight_Standardlimb_0201D8" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_04" Offset="0x201D8" /> <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="OBJECT_KNIGHT_2_LIMB_05" Offset="0x201E4" /> <Limb Name="object_knight_Standardlimb_0201E4" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_FOREARM" Offset="0x201E4" />
<Limb Name="object_knight_Standardlimb_0201F0" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_06" Offset="0x201F0" /> <Limb Name="object_knight_Standardlimb_0201F0" Type="Standard" EnumName="KNIGHT_LIMB_SHIELD" Offset="0x201F0" />
<Limb Name="object_knight_Standardlimb_0201FC" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_07" Offset="0x201FC" /> <Limb Name="object_knight_Standardlimb_0201FC" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_HAND" Offset="0x201FC" />
<Limb Name="object_knight_Standardlimb_020208" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_08" Offset="0x20208" /> <Limb Name="object_knight_Standardlimb_020208" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_SHOULDER" Offset="0x20208" />
<Limb Name="object_knight_Standardlimb_020214" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_09" Offset="0x20214" /> <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="OBJECT_KNIGHT_2_LIMB_0A" Offset="0x20220" /> <Limb Name="object_knight_Standardlimb_020220" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_FOREARM" Offset="0x20220" />
<Limb Name="object_knight_Standardlimb_02022C" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0B" Offset="0x2022C" /> <Limb Name="object_knight_Standardlimb_02022C" Type="Standard" EnumName="KNIGHT_LIMB_SWORD" Offset="0x2022C" />
<Limb Name="object_knight_Standardlimb_020238" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0C" Offset="0x20238" /> <Limb Name="object_knight_Standardlimb_020238" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_HAND" Offset="0x20238" />
<Limb Name="object_knight_Standardlimb_020244" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0D" Offset="0x20244" /> <Limb Name="object_knight_Standardlimb_020244" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_SHOULDER" Offset="0x20244" />
<Limb Name="object_knight_Standardlimb_020250" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0E" Offset="0x20250" /> <Limb Name="object_knight_Standardlimb_020250" Type="Standard" EnumName="KNIGHT_LIMB_COLLAR" Offset="0x20250" />
<Limb Name="object_knight_Standardlimb_02025C" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_0F" Offset="0x2025C" /> <Limb Name="object_knight_Standardlimb_02025C" Type="Standard" EnumName="KNIGHT_LIMB_NECK" Offset="0x2025C" />
<Limb Name="object_knight_Standardlimb_020268" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_10" Offset="0x20268" /> <Limb Name="object_knight_Standardlimb_020268" Type="Standard" EnumName="KNIGHT_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_020274" Type="Standard" EnumName="KNIGHT_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_020280" Type="Standard" EnumName="KNIGHT_LIMB_JAW" Offset="0x20280" />
<Limb Name="object_knight_Standardlimb_02028C" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_13" Offset="0x2028C" /> <Limb Name="object_knight_Standardlimb_02028C" Type="Standard" EnumName="KNIGHT_LIMB_HEAD" Offset="0x2028C" />
<Limb Name="object_knight_Standardlimb_020298" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_14" Offset="0x20298" /> <Limb Name="object_knight_Standardlimb_020298" Type="Standard" EnumName="KNIGHT_LIMB_TORSO" Offset="0x20298" />
<Limb Name="object_knight_Standardlimb_0202A4" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_15" Offset="0x202A4" /> <Limb Name="object_knight_Standardlimb_0202A4" Type="Standard" EnumName="KNIGHT_LIMB_PELVIS" Offset="0x202A4" />
<Limb Name="object_knight_Standardlimb_0202B0" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_16" Offset="0x202B0" /> <Limb Name="object_knight_Standardlimb_0202B0" Type="Standard" EnumName="KNIGHT_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_0202BC" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_LEG_UPPER" Offset="0x202BC" />
<Limb Name="object_knight_Standardlimb_0202C8" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_18" Offset="0x202C8" /> <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="OBJECT_KNIGHT_2_LIMB_19" Offset="0x202D4" /> <Limb Name="object_knight_Standardlimb_0202D4" Type="Standard" EnumName="KNIGHT_LIMB_LEFT_FOOT" Offset="0x202D4" />
<Limb Name="object_knight_Standardlimb_0202E0" Type="Standard" EnumName="OBJECT_KNIGHT_2_LIMB_1A" Offset="0x202E0" /> <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="OBJECT_KNIGHT_2_LIMB_1B" Offset="0x202EC" /> <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="OBJECT_KNIGHT_2_LIMB_1C" Offset="0x202F8" /> <Limb Name="object_knight_Standardlimb_0202F8" Type="Standard" EnumName="KNIGHT_LIMB_RIGHT_FOOT" 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" /> <Skeleton Name="gKnightSkel" Type="Flex" LimbType="Standard" LimbNone="KNIGHT_LIMB_NONE" LimbMax="KNIGHT_LIMB_MAX" EnumName="KnightLimb" Offset="0x20374" />
<Animation Name="object_knight_Anim_020950" Offset="0x20950" /> <!-- Original name is probably "nsk_tategiri_tame" --> <Animation Name="gKnightTelegraphHeavyAttackAnim" 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="gKnightIgosShrugStopAnim" Offset="0x2105C" /> <!-- Original name is probably "nsk_towaitBD" -->
<Animation Name="object_knight_Anim_021B10" Offset="0x21B10" /> <!-- Original name is probably "nsk_walkD" --> <Animation Name="gKnightIntroWalkAnim" Offset="0x21B10" /> <!-- Original name is probably "nsk_walkD" -->
<Animation Name="object_knight_Anim_021E34" Offset="0x21E34" /> <!-- Original name is probably "nsk_whyD" --> <Animation Name="gKnightIgosShrugStartAnim" Offset="0x21E34" /> <!-- Original name is probably "nsk_whyD" -->
<Animation Name="object_knight_Anim_022728" Offset="0x22728" /> <!-- Original name is probably "nsk_yokogiri" --> <Animation Name="gKnightLowSwingAnim" Offset="0x22728" /> <!-- Original name is probably "nsk_yokogiri" -->
<Animation Name="object_knight_Anim_022CAC" Offset="0x22CAC" /> <!-- Original name is probably "nsk_yokogiri_kime" --> <Animation Name="gKnightLowSwingEndAnim" Offset="0x22CAC" /> <!-- Original name is probably "nsk_yokogiri_kime" -->
</File> </File>
</Root> </Root>

View File

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

View File

@ -148,8 +148,6 @@ D_01000000 = 0x01000000;
D_04023348 = 0x04023348; D_04023348 = 0x04023348;
D_040233B8 = 0x040233B8; D_040233B8 = 0x040233B8;
D_04023428 = 0x04023428; D_04023428 = 0x04023428;
D_04051180 = 0x04051180;
D_04051238 = 0x04051238;
D_0406AB30 = 0x0406AB30; D_0406AB30 = 0x0406AB30;
// segment 0x05 // segment 0x05
@ -232,65 +230,6 @@ D_06004894 = 0x06004894;
D_060086BC = 0x060086BC; D_060086BC = 0x060086BC;
D_0600C3E0 = 0x0600C3E0; 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 // ovl_En_Zl4
D_06013328 = 0x06013328; D_06013328 = 0x06013328;

4
spec
View File

@ -2187,9 +2187,7 @@ beginseg
name "ovl_En_Knight" name "ovl_En_Knight"
compress compress
include "$(BUILD_DIR)/src/overlays/actors/ovl_En_Knight/z_en_knight.o" 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)/src/overlays/actors/ovl_En_Knight/ovl_En_Knight_reloc.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"
endseg endseg
beginseg beginseg

View File

@ -20,54 +20,62 @@ void Boss06_Destroy(Actor* thisx, PlayState* play);
void Boss06_Update(Actor* thisx, PlayState* play); void Boss06_Update(Actor* thisx, PlayState* play);
void Boss06_Draw(Actor* thisx, PlayState* play2); void Boss06_Draw(Actor* thisx, PlayState* play2);
void func_809F24A8(Boss06* this); void Boss06_SetupCurtainBurningCutscene(Boss06* this);
void func_809F24C8(Boss06* this, PlayState* play); void Boss06_CurtainBurningCutscene(Boss06* this, PlayState* play);
void func_809F2B64(Boss06* this, PlayState* play); void Boss06_SetupCloseCurtain(Boss06* this, PlayState* play);
void func_809F2C44(Boss06* this, PlayState* play); void Boss06_CloseCurtain(Boss06* this, PlayState* play);
void func_809F2E14(Boss06* this, PlayState* play); void Boss06_SetupCurtainClosed(Boss06* this, PlayState* play);
void func_809F2E34(Boss06* this, PlayState* play); void Boss06_CurtainClosed(Boss06* this, PlayState* play);
void func_809F2ED0(Boss06* this, PlayState* play); void Boss06_SetupCurtainDestroyed(Boss06* this, PlayState* play);
void func_809F2EE8(Boss06* this, PlayState* play); void Boss06_CurtainDestroyed(Boss06* this, PlayState* play);
Vec3f D_809F4370[128]; Vec3f sCurtainFireEffectPositions[128];
EnKnight* D_809F4970; static EnKnight* sIgosInstance;
s32 D_809F4974; s32 sBoss06Seed1;
s32 D_809F4978; s32 sBoss06Seed2;
s32 D_809F497C; 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 = { static DamageTable sDamageTable = {
/* Deku Nut */ DMG_ENTRY(0, 0xF), /* Deku Nut */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Deku Stick */ DMG_ENTRY(0, 0xF), /* Deku Stick */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Horse trample */ DMG_ENTRY(0, 0x0), /* Horse trample */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Explosives */ DMG_ENTRY(1, 0xF), /* Explosives */ DMG_ENTRY(1, BOSS06_DMGEFF_F),
/* Zora boomerang */ DMG_ENTRY(0, 0xF), /* Zora boomerang */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Normal arrow */ DMG_ENTRY(0, 0xF), /* Normal arrow */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* UNK_DMG_0x06 */ DMG_ENTRY(0, 0x0), /* UNK_DMG_0x06 */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Hookshot */ DMG_ENTRY(0, 0xF), /* Hookshot */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Goron punch */ DMG_ENTRY(0, 0xF), /* Goron punch */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Sword */ DMG_ENTRY(0, 0xF), /* Sword */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Goron pound */ DMG_ENTRY(0, 0xF), /* Goron pound */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Fire arrow */ DMG_ENTRY(1, 0x2), /* Fire arrow */ DMG_ENTRY(1, BOSS06_DMGEFF_FIRE_ARROW),
/* Ice arrow */ DMG_ENTRY(0, 0x3), /* Ice arrow */ DMG_ENTRY(0, BOSS06_DMGEFF_ICE_ARROW),
/* Light arrow */ DMG_ENTRY(0, 0x4), /* Light arrow */ DMG_ENTRY(0, BOSS06_DMGEFF_LIGHT_ARROW),
/* Goron spikes */ DMG_ENTRY(0, 0xF), /* Goron spikes */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Deku spin */ DMG_ENTRY(0, 0xF), /* Deku spin */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Deku bubble */ DMG_ENTRY(0, 0xF), /* Deku bubble */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Deku launch */ DMG_ENTRY(0, 0xF), /* Deku launch */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* UNK_DMG_0x12 */ DMG_ENTRY(0, 0xF), /* UNK_DMG_0x12 */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Zora barrier */ DMG_ENTRY(0, 0x0), /* Zora barrier */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Normal shield */ DMG_ENTRY(0, 0xF), /* Normal shield */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Light ray */ DMG_ENTRY(0, 0xF), /* Light ray */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Thrown object */ DMG_ENTRY(0, 0xF), /* Thrown object */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Zora punch */ DMG_ENTRY(0, 0xF), /* Zora punch */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Spin attack */ DMG_ENTRY(0, 0xF), /* Spin attack */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* Sword beam */ DMG_ENTRY(0, 0x0), /* Sword beam */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Normal Roll */ DMG_ENTRY(0, 0xF), /* Normal Roll */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
/* UNK_DMG_0x1B */ DMG_ENTRY(0, 0x0), /* UNK_DMG_0x1B */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* UNK_DMG_0x1C */ DMG_ENTRY(0, 0x0), /* UNK_DMG_0x1C */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Unblockable */ DMG_ENTRY(0, 0x0), /* Unblockable */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* UNK_DMG_0x1E */ DMG_ENTRY(0, 0x0), /* UNK_DMG_0x1E */ DMG_ENTRY(0, BOSS06_DMGEFF_0),
/* Powder Keg */ DMG_ENTRY(0, 0xF), /* Powder Keg */ DMG_ENTRY(0, BOSS06_DMGEFF_F),
}; };
ActorInit Boss_06_InitVars = { ActorInit Boss_06_InitVars = {
@ -102,54 +110,63 @@ static ColliderCylinderInit sCylinderInit = {
{ 90, 140, 10, { 0, 0, 0 } }, { 90, 140, 10, { 0, 0, 0 } },
}; };
Vec3f D_809F40EC[] = { static Vec3f sCurtainLocations[] = {
{ 1081.0f, 235.0f, 3224.0f }, { 1081.0f, 235.0f, 3224.0f },
{ 676.0f, 235.0f, 3224.0f }, { 676.0f, 235.0f, 3224.0f },
}; };
void func_809F2120(s32 arg0, s32 arg1, s32 arg2) { #define BOSS06_DRAWFLAG_CURTAIN (1 << 0)
D_809F4974 = arg0; #define BOSS06_DRAWFLAG_LIGHT_RAY (1 << 1)
D_809F4978 = arg1;
D_809F497C = arg2; 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 Boss06_RandZeroOne(void) {
f32 temp_f2; // Wichmann-Hill algorithm
f32 randFloat;
D_809F4974 = (D_809F4974 * 171) % 30269; sBoss06Seed1 = (sBoss06Seed1 * 171) % 30269;
D_809F4978 = (D_809F4978 * 172) % 30307; sBoss06Seed2 = (sBoss06Seed2 * 172) % 30307;
D_809F497C = (D_809F497C * 170) % 30323; sBoss06Seed3 = (sBoss06Seed3 * 170) % 30323;
temp_f2 = (D_809F4974 / 30269.0f) + (D_809F4978 / 30307.0f) + (D_809F497C / 30323.0f);
while (temp_f2 >= 1.0f) { randFloat = (sBoss06Seed1 / 30269.0f) + (sBoss06Seed2 / 30307.0f) + (sBoss06Seed3 / 30323.0f);
temp_f2 -= 1.0f; while (randFloat >= 1.0f) {
randFloat -= 1.0f;
} }
return fabsf(randFloat);
return fabsf(temp_f2);
} }
void Boss06_Init(Actor* thisx, PlayState* play) { void Boss06_Init(Actor* thisx, PlayState* play) {
Boss06* this = THIS; Boss06* this = THIS;
u8* temp_v0; u8* curtainTexture;
s32 i; s32 i;
D_809F4970 = (EnKnight*)this->actor.parent; sIgosInstance = (EnKnight*)this->actor.parent;
this->actor.colChkInfo.damageTable = &sDamageTable; this->actor.colChkInfo.damageTable = &sDamageTable;
if ((KREG(64) != 0) || CHECK_EVENTINF(EVENTINF_INTRO_CS_WATCHED_IGOS_DU_IKANA)) { if ((KREG(64) != 0) || CHECK_EVENTINF(EVENTINF_INTRO_CS_WATCHED_IGOS_DU_IKANA)) {
this->actionFunc = func_809F2E14; this->actionFunc = Boss06_SetupCurtainClosed;
} else { } else {
this->actionFunc = func_809F2B64; this->actionFunc = Boss06_SetupCloseCurtain;
} }
Actor_SetScale(&this->actor, 0.1f); 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; this->actor.shape.rot.y = -0x8000;
Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
temp_v0 = SEGMENTED_TO_K0(&object_knight_Tex_019490); curtainTexture = SEGMENTED_TO_K0(&gIkanaThroneRoomCurtainTex);
for (i = 0; i < ARRAY_COUNT(this->unk_200); i++) { for (i = 0; i < ARRAY_COUNT(this->curtainTexture); i++) {
this->unk_200[i] = temp_v0[i]; this->curtainTexture[i] = curtainTexture[i];
} }
this->actor.flags &= ~ACTOR_FLAG_TARGETABLE; 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 Boss06_Destroy(Actor* thisx, PlayState* play) {
} }
void func_809F23CC(Boss06* this) { void Boss06_UpdateDamage(Boss06* this) {
if (this->collider.base.acFlags & AC_HIT) { if (this->collider.base.acFlags & AC_HIT) {
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) { if ((this->csState == BOSS06_CS_STATE_BEGIN) && (sIgosInstance->subCamId == CAM_ID_MAIN)) {
func_809F24A8(this); if (this->actor.colChkInfo.damageEffect == BOSS06_DMGEFF_FIRE_ARROW) {
Boss06_SetupCurtainBurningCutscene(this);
Audio_PlaySfx(NA_SE_SY_TRE_BOX_APPEAR); Audio_PlaySfx(NA_SE_SY_TRE_BOX_APPEAR);
this->unk_1B0 = -(this->actor.world.pos.x - this->collider.info.bumper.hitPos.x); this->arrowHitPos.x = -(this->actor.world.pos.x - this->collider.info.bumper.hitPos.x);
this->unk_1BC = this->unk_1B0 * 0.35f; 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->arrowHitPos.y = -((this->actor.world.pos.y + 80.0f) - this->collider.info.bumper.hitPos.y);
this->unk_1C0 = this->unk_1B4 * -0.35f; this->arrowHitPosScaled.y = this->arrowHitPos.y * -0.35f;
} }
} }
} }
} }
void func_809F24A8(Boss06* this) { void Boss06_SetupCurtainBurningCutscene(Boss06* this) {
this->actionFunc = func_809F24C8; this->actionFunc = Boss06_CurtainBurningCutscene;
this->unk_A28 = 0.0f; this->maxStepScale = 0.0f;
this->unk_1AC = 0.0f; this->lensFlareYOffset = 0.0f;
} }
void func_809F24C8(Boss06* this, PlayState* play) { void Boss06_CurtainBurningCutscene(Boss06* this, PlayState* play) {
s16 sp4E = 0; s16 frameTarget = 0;
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
Actor* temp_s0; Actor* searchArrow;
Actor* temp_v0_2; Actor* searchKnight;
Actor* child; Actor* child;
this->unk_1CA++; this->csFrameCount++;
switch (this->unk_1C9) { switch (this->csState) {
case 0: case BOSS06_CS_STATE_BEGIN:
if (CutsceneManager_GetCurrentCsId() != CS_ID_NONE) { if (CutsceneManager_GetCurrentCsId() != CS_ID_NONE) {
break; break;
} }
@ -202,42 +220,41 @@ void func_809F24C8(Boss06* this, PlayState* play) {
this->subCamId = Play_CreateSubCamera(play); this->subCamId = Play_CreateSubCamera(play);
Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT);
Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE);
D_809F4970->unk_151 = 1; sIgosInstance->inCurtainCutscene = true;
this->unk_1C9 = 1; this->csState = BOSS06_CS_STATE_SHOW_BURNING_AND_REACTIONS;
this->unk_1C8 = 1; this->updateFireEffects = true;
this->unk_1E0 = 255.0f; this->lightOrbAlphaFactor = 255.0f;
this->unk_1DC = 0.0f; this->lightOrbScale = 0.0f;
temp_s0 = play->actorCtx.actorLists[ACTORCAT_ITEMACTION].first; // Kill all arrow actors
while (temp_s0 != NULL) { for (searchArrow = play->actorCtx.actorLists[ACTORCAT_ITEMACTION].first; searchArrow != NULL;
if (temp_s0->id == ACTOR_EN_ARROW) { searchArrow = searchArrow->next) {
Actor_Kill(temp_s0); if (searchArrow->id == ACTOR_EN_ARROW) {
Actor_Kill(searchArrow);
} }
temp_s0 = temp_s0->next;
} }
case 1: case BOSS06_CS_STATE_SHOW_BURNING_AND_REACTIONS:
if (this->unk_1CA >= 10) { if (this->csFrameCount >= 10) {
Math_ApproachF(&this->unk_1E4, 30.0f, 0.2f, 1.0f); Math_ApproachF(&this->lensFlareScale, 30.0f, 0.2f, 1.0f);
play->envCtx.fillScreen = true; play->envCtx.fillScreen = true;
play->envCtx.screenFillColor[2] = 0; play->envCtx.screenFillColor[0] = play->envCtx.screenFillColor[1] = play->envCtx.screenFillColor[2] = 0;
play->envCtx.screenFillColor[1] = 0; play->envCtx.screenFillColor[3] = this->screenFillAlpha;
play->envCtx.screenFillColor[0] = 0; Math_ApproachF(&this->screenFillAlpha, 75.0f, 1.0f, 3.0f);
play->envCtx.screenFillColor[3] = this->unk_A2C;
Math_ApproachF(&this->unk_A2C, 75.0f, 1.0f, 3.0f);
} }
if (this->unk_1CA >= 30) { if (this->csFrameCount >= 30) {
Audio_PlaySfx(NA_SE_EV_S_STONE_FLASH); Audio_PlaySfx(NA_SE_EV_S_STONE_FLASH);
} }
if (this->unk_1CA >= 60) { if (this->csFrameCount >= 60) {
play->envCtx.fillScreen = false; play->envCtx.fillScreen = false;
this->unk_1C8 = 0; this->updateFireEffects = false;
this->unk_1DC = 0.0f; this->lightOrbScale = 0.0f;
this->unk_1D8 = 0.0f; this->fireEffectScale = 0.0f;
if (this->unk_1CA == 60) {
D_809F4970->unk_154++; if (this->csFrameCount == 60) {
sIgosInstance->roomLightingState++;
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_132); Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_132);
player->actor.shape.rot.y = 0; player->actor.shape.rot.y = 0;
player->actor.world.rot.y = player->actor.shape.rot.y; 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.y = player->actor.world.pos.y + 26.0f;
this->subCamAt.z = player->actor.world.pos.z; this->subCamAt.z = player->actor.world.pos.z;
if (this->unk_1CA >= 75) { if (this->csFrameCount >= 75) {
temp_v0_2 = play->actorCtx.actorLists[ACTORCAT_BOSS].first; for (searchKnight = play->actorCtx.actorLists[ACTORCAT_BOSS].first; searchKnight != NULL;
while (temp_v0_2 != NULL) { searchKnight = searchKnight->next) {
if ((temp_v0_2->id == ACTOR_EN_KNIGHT) && (&D_809F4970->actor == temp_v0_2) && if ((searchKnight->id == ACTOR_EN_KNIGHT) && (&sIgosInstance->actor == searchKnight) &&
(D_809F4970->unk_680 != 0)) { sIgosInstance->inCurtainReaction) {
this->subCamEye.x = 1307.0f; this->subCamEye.x = 1307.0f;
this->subCamEye.y = 142.0f; this->subCamEye.y = 142.0f;
this->subCamEye.z = 2897.0f; this->subCamEye.z = 2897.0f;
@ -264,27 +281,26 @@ void func_809F24C8(Boss06* this, PlayState* play) {
this->subCamAt.y = 132.0f; this->subCamAt.y = 132.0f;
this->subCamAt.z = 2860.0f; this->subCamAt.z = 2860.0f;
if (this->unk_1CA == 75) { if (this->csFrameCount == 75) {
D_809F4970->unk_148 = 1; sIgosInstance->subAction = KNIGHT_SUB_ACTION_CURTAIN_REACT_BEGIN;
} }
sp4E = 17; frameTarget = 17;
break; break;
} }
temp_v0_2 = temp_v0_2->next;
} }
} }
if ((s16)(sp4E + 80) < this->unk_1CA) { if (this->csFrameCount > (s16)(frameTarget + 80)) {
this->unk_1C9 = 2; this->csState = BOSS06_CS_STATE_PAN_OVER_LIGHT_RAY;
this->unk_1CA = 0; this->csFrameCount = 0;
this->unk_1B4 = 0.0f; this->arrowHitPos.y = 0.0f;
this->unk_1B0 = 0.0f; this->arrowHitPos.x = 0.0f;
this->unk_144 = 2; this->drawFlags = BOSS06_DRAWFLAG_LIGHT_RAY;
this->unk_1A4 = 0.0f; this->lightRayBaseOffsetZ = 0.0f;
this->unk_1A0 = 0.0f; this->lightRayTopVerticesOffset = 0.0f;
this->unk_1DC = 18.0f; this->lightOrbScale = 18.0f;
this->unk_1E0 = 255.0f; this->lightOrbAlphaFactor = 255.0f;
this->unk_19C = 1.0f; this->lightRayBrightness = 1.0f;
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_MIR_RAY2, this->actor.world.pos.x, 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); 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; break;
case 2: case BOSS06_CS_STATE_PAN_OVER_LIGHT_RAY:
child = this->actor.child; child = this->actor.child;
if (this->unk_1CA == 1) { if (this->csFrameCount == 1) {
this->unk_A1C.x = fabsf(this->subCamAt.x - child->world.pos.x); this->subCamMaxStep.x = fabsf(this->subCamAt.x - child->world.pos.x);
this->unk_A1C.y = fabsf(this->subCamAt.y - child->world.pos.y); this->subCamMaxStep.y = fabsf(this->subCamAt.y - child->world.pos.y);
this->unk_A1C.z = fabsf(this->subCamAt.z - child->world.pos.z); 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.x, child->world.pos.x, 0.15f, this->subCamMaxStep.x * this->maxStepScale);
Math_ApproachF(&this->subCamAt.y, child->world.pos.y, 0.15f, this->unk_A1C.y * this->unk_A28); 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->unk_A1C.z * this->unk_A28); Math_ApproachF(&this->subCamAt.z, child->world.pos.z, 0.15f, this->subCamMaxStep.z * this->maxStepScale);
Math_ApproachF(&this->unk_A28, 1.0f, 1.0f, 0.001f); Math_ApproachF(&this->maxStepScale, 1.0f, 1.0f, 0.001f);
if (this->unk_1CA > 80) { if (this->csFrameCount > 80) {
func_809F2ED0(this, play); Boss06_SetupCurtainDestroyed(this, play);
func_80169AFC(play, this->subCamId, 0); func_80169AFC(play, this->subCamId, 0);
this->subCamId = SUB_CAM_ID_DONE; this->subCamId = SUB_CAM_ID_DONE;
Cutscene_StopManual(play, &play->csCtx); Cutscene_StopManual(play, &play->csCtx);
Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END); Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_END);
D_809F4970->unk_151 = 0; sIgosInstance->inCurtainCutscene = false;
} }
break; break;
} }
@ -343,151 +359,158 @@ void func_809F24C8(Boss06* this, PlayState* play) {
} }
} }
void func_809F2B64(Boss06* this, PlayState* play) { void Boss06_SetupCloseCurtain(Boss06* this, PlayState* play) {
this->actionFunc = func_809F2C44; this->actionFunc = Boss06_CloseCurtain;
this->unk_144 = 3; this->drawFlags = BOSS06_DRAWFLAG_LIGHT_RAY | BOSS06_DRAWFLAG_CURTAIN;
this->unk_1A8 = 110.0f; this->curtainHeight = 110.0f;
this->unk_1E0 = 200; this->lightOrbAlphaFactor = 200;
this->unk_1DC = 15.0f; this->lightOrbScale = 15.0f;
this->unk_1E4 = 30.0f; this->lensFlareScale = 30.0f;
this->unk_1AC = 0.0f; this->lensFlareYOffset = 0.0f;
this->unk_19C = 1.0f; this->lightRayBrightness = 1.0f;
Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_MIR_RAY2, this->actor.world.pos.x, 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); 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) { void Boss06_CloseCurtain(Boss06* this, PlayState* play) {
if (D_809F4970->unk_153 != 0) { if (sIgosInstance->closeCurtainAction != KNIGHT_CLOSE_CURTAIN_ACTION_0) {
this->unk_A28 = 0.008f; this->maxStepScale = 0.008f;
Math_ApproachF(&this->unk_1E4, 0.0f, 0.2f, this->unk_A28 * 30.0f); Math_ApproachF(&this->lensFlareScale, 0.0f, 0.2f, this->maxStepScale * 30.0f);
Math_ApproachF(&this->unk_1AC, -70.0f, 0.2f, this->unk_A28 * 70.0f); Math_ApproachF(&this->lensFlareYOffset, -70.0f, 0.2f, this->maxStepScale * 70.0f);
Math_ApproachF(&this->unk_1A8, 0.0f, 0.2f, this->unk_A28 * 110.0f); Math_ApproachF(&this->curtainHeight, 0.0f, 0.2f, this->maxStepScale * 110.0f);
Math_ApproachF(&this->unk_1A0, -900.0f, 0.2f, this->unk_A28 * 900.0f); Math_ApproachF(&this->lightRayTopVerticesOffset, -900.0f, 0.2f, this->maxStepScale * 900.0f);
Math_ApproachF(&this->unk_1A4, 1350.0f, 0.2f, this->unk_A28 * 1350.0f); Math_ApproachF(&this->lightRayBaseOffsetZ, 1350.0f, 0.2f, this->maxStepScale * 1350.0f);
Math_ApproachF(&this->unk_1E0, 100.0f, 0.2f, this->unk_A28 * 100.0f); Math_ApproachF(&this->lightOrbAlphaFactor, 100.0f, 0.2f, this->maxStepScale * 100.0f);
if (this->unk_1E4 < 5.0f) { if (this->lensFlareScale < 5.0f) {
Math_ApproachF(&this->unk_19C, 0.0f, 1.0f, 0.03f); 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); 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); Actor_Kill(this->actor.child);
this->actor.child = NULL; this->actor.child = NULL;
func_809F2E14(this, play); Boss06_SetupCurtainClosed(this, play);
} }
} }
void func_809F2E14(Boss06* this, PlayState* play) { void Boss06_SetupCurtainClosed(Boss06* this, PlayState* play) {
this->actionFunc = func_809F2E34; this->actionFunc = Boss06_CurtainClosed;
this->unk_144 = 1; this->drawFlags = BOSS06_DRAWFLAG_CURTAIN;
} }
void func_809F2E34(Boss06* this, PlayState* play) { void Boss06_CurtainClosed(Boss06* this, PlayState* play) {
this->unk_1E0 = 200.0f; this->lightOrbAlphaFactor = 200.0f;
this->unk_1DC = 15.0f; this->lightOrbScale = 15.0f;
func_809F23CC(this); Boss06_UpdateDamage(this);
Collider_UpdateCylinder(&this->actor, &this->collider); Collider_UpdateCylinder(&this->actor, &this->collider);
this->collider.dim.pos.z = (this->actor.world.pos.z - 50.0f) + 100.0f; this->collider.dim.pos.z = (this->actor.world.pos.z - 50.0f) + 100.0f;
CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base); CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base);
} }
void func_809F2ED0(Boss06* this, PlayState* play) { void Boss06_SetupCurtainDestroyed(Boss06* this, PlayState* play) {
this->actionFunc = func_809F2EE8; this->actionFunc = Boss06_CurtainDestroyed;
} }
void func_809F2EE8(Boss06* this, PlayState* play) { void Boss06_CurtainDestroyed(Boss06* this, PlayState* play) {
this->unk_1E0 = 100.0f; this->lightOrbAlphaFactor = 100.0f;
this->unk_1DC = 13.0f; this->lightOrbScale = 13.0f;
} }
void Boss06_Update(Actor* thisx, PlayState* play) { void Boss06_Update(Actor* thisx, PlayState* play) {
Boss06* this = THIS; Boss06* this = THIS;
s32 i;
Vec3f sp7C;
f32 temp_f22;
f32 phi_f26;
f32 phi_f24;
this->actionFunc(this, play); this->actionFunc(this, play);
if (this->unk_146 != 0) { if (this->unusedTimer1 != 0) {
this->unk_146--; this->unusedTimer1--;
} }
if (this->unk_148 != 0) { if (this->unusedTimer2 != 0) {
this->unk_148--; this->unusedTimer2--;
} }
if (this->unk_1E4 > 0.0f) { if (this->lensFlareScale > 0.0f) {
if (ENBOSS06_GET_PARAMS(&this->actor) == 0) { if (ENBOSS06_GET_PARAMS(&this->actor) == 0) {
gCustomLensFlare1On = true; gCustomLensFlare1On = true;
gCustomLensFlare1Pos.x = this->actor.world.pos.x + this->unk_1B0; gCustomLensFlare1Pos.x = this->actor.world.pos.x + this->arrowHitPos.x;
gCustomLensFlare1Pos.y = this->actor.world.pos.y + 80.0f + this->unk_1B4 + this->unk_1AC; gCustomLensFlare1Pos.y = this->actor.world.pos.y + 80.0f + this->arrowHitPos.y + this->lensFlareYOffset;
gCustomLensFlare1Pos.z = this->actor.world.pos.z; gCustomLensFlare1Pos.z = this->actor.world.pos.z;
D_801F4E44 = this->unk_1E4; D_801F4E44 = this->lensFlareScale;
D_801F4E48 = 10.0f; D_801F4E48 = 10.0f;
D_801F4E4C = 0; D_801F4E4C = 0;
} else { } else {
gCustomLensFlare2On = true; gCustomLensFlare2On = true;
gCustomLensFlare2Pos.x = this->actor.world.pos.x + this->unk_1B0; gCustomLensFlare2Pos.x = this->actor.world.pos.x + this->arrowHitPos.x;
gCustomLensFlare2Pos.y = this->actor.world.pos.y + 80.0f + this->unk_1B4 + this->unk_1AC; gCustomLensFlare2Pos.y = this->actor.world.pos.y + 80.0f + this->arrowHitPos.y + this->lensFlareYOffset;
gCustomLensFlare2Pos.z = this->actor.world.pos.z; gCustomLensFlare2Pos.z = this->actor.world.pos.z;
D_801F4E5C = this->unk_1E4; D_801F4E5C = this->lensFlareScale;
D_801F4E60 = 10.0f; D_801F4E60 = 10.0f;
D_801F4E64 = 0; D_801F4E64 = 0;
} }
} else if (ENBOSS06_GET_PARAMS(&this->actor) == 0) { } else {
if (ENBOSS06_GET_PARAMS(&this->actor) == 0) {
gCustomLensFlare1On = false; gCustomLensFlare1On = false;
} else { } else {
gCustomLensFlare2On = false; gCustomLensFlare2On = false;
} }
if ((this->unk_1C8 != 0) && (this->unk_1C8 != 0)) {
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);
phi_f26 = 0.0f;
phi_f24 = 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;
phi_f26 += (M_PIf / 64);
phi_f24 += 0.030679617f;
Matrix_RotateZF(i * (M_PIf / 512), MTXMODE_NEW);
Matrix_MultVecY(temp_f22, &sp7C);
sp7C.x += 32.0f + this->unk_1BC;
sp7C.y += 32.0f + this->unk_1C0;
if ((i % 8) == 0) {
Math_Vec3f_Copy(&D_809F4370[i / 8], &sp7C);
} }
if ((sp7C.x >= 0.0f) && (sp7C.y >= 0.0f) && (sp7C.x < 64.0f) && (sp7C.y < 64.0f)) { if (this->updateFireEffects && this->updateFireEffects) {
s32 x = sp7C.x; s32 i;
s32 idx = ((s32)sp7C.y << 5); Vec3f texCoords;
f32 distFromHitPos;
f32 angle0;
f32 angle1;
Audio_PlaySfx(NA_SE_EV_FIRE_PLATE - SFX_FLAG);
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);
angle0 = 0.0f;
angle1 = 0.0f;
for (i = 0; i < 8 * ARRAY_COUNT(sCurtainFireEffectPositions); i++) {
distFromHitPos = (sinf(angle1) * this->fireEffectDistanceScale1 + 1.0f) *
(sinf(angle0) * this->fireEffectDistanceScale2 + this->fireEffectDistanceScale2) +
this->fireEffectDistanceAdd;
angle0 += M_PIf / 64;
angle1 += 5 * M_PIf / 512;
Matrix_RotateZF(i * (M_PIf / 512), MTXMODE_NEW);
Matrix_MultVecY(distFromHitPos, &texCoords);
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(&sCurtainFireEffectPositions[i / 8], &texCoords);
}
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); idx += (x / 2);
// The texture format is CI4, only zero one pixel
if ((x % 2) != 0) { if ((x % 2) != 0) {
this->unk_200[idx] &= 0xF0; this->curtainTexture[idx] &= 0xF0;
} else { } else {
this->unk_200[idx] &= 0xF; this->curtainTexture[idx] &= 0xF;
} }
} }
} }
@ -498,127 +521,204 @@ void Boss06_Draw(Actor* thisx, PlayState* play2) {
PlayState* play = play2; PlayState* play = play2;
Boss06* this = THIS; Boss06* this = THIS;
s32 i; s32 i;
f32 spE0 = 0.0f; f32 lightOrbOffsetZ = 0.0f;
s16 temp_s0; s16 lightRayBaseX;
s16 temp_f10; s16 lightRayBaseZ;
Vtx* temp_v0_2; Vtx* vertices;
u16 temp_v0; u16 time;
u16 pad; u16 pad;
u8 spD3; u8 lightRayAlpha;
u8 spD2; u8 floorLightAlpha;
s32 maxColor = 255; //! FAKE: s32 lightRayGreenFactor = 255;
f32 sp68; f32 lightRayBlueFactor;
OPEN_DISPS(play->state.gfxCtx); OPEN_DISPS(play->state.gfxCtx);
Gfx_SetupDL25_Xlu(play->state.gfxCtx); Gfx_SetupDL25_Xlu(play->state.gfxCtx);
Gfx_SetupDL25_Opa(play->state.gfxCtx); Gfx_SetupDL25_Opa(play->state.gfxCtx);
temp_v0 = CURRENT_TIME; time = CURRENT_TIME;
if (temp_v0 > CLOCK_TIME(12, 0)) { if (time > CLOCK_TIME(12, 0)) {
temp_v0 = (DAY_LENGTH - 1) - temp_v0; time = (DAY_LENGTH - 1) - time;
} }
sp68 = (f32)temp_v0 / 0x8000; lightRayBlueFactor = (f32)time / 0x8000;
spD3 = ((10.0f * sp68) + 105.0f) * this->unk_19C; lightRayAlpha = (10.0f * lightRayBlueFactor + 105.0f) * this->lightRayBrightness;
spD2 = ((40.0f * sp68) + 55.0f) * this->unk_19C; floorLightAlpha = (40.0f * lightRayBlueFactor + 55.0f) * this->lightRayBrightness;
if (this->unk_144 & 2) { if (this->drawFlags & BOSS06_DRAWFLAG_LIGHT_RAY) {
temp_s0 = Math_SinS(D_809F4970->unk_144) * 1000.0f; lightRayBaseX = Math_SinS(sIgosInstance->curtainsLightRayAngle) * 1000.0f;
temp_f10 = (Math_CosS(D_809F4970->unk_144) * -2000.0f) - 2000.0f; lightRayBaseZ = Math_CosS(sIgosInstance->curtainsLightRayAngle) * -2000.0f - 2000.0f;
temp_v0_2 = SEGMENTED_TO_K0(&object_knight_Vtx_018BD0); 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; * Vertices:
temp_v0_2[4].v.ob[1] = TRUNCF_BINANG(this->unk_1A0) + 0xE92; * [ 0] ( 300, 3730, 1112)
temp_v0_2[7].v.ob[1] = TRUNCF_BINANG(this->unk_1A0) + 0xE92; * [ 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; // Vertices 0-3 form a rectangle on the wall.
temp_v0_2[5].v.ob[2] = (temp_f10 + TRUNCF_BINANG(this->unk_1A4)) - 0x708; // 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; // 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[6].v.ob[2] = (temp_f10 + TRUNCF_BINANG(this->unk_1A4)) - 0x708;
temp_v0_2[9].v.ob[0] = temp_s0 + 0x2A3; // These vertices are the 4 highest vertices, move these up and down based on the curtain height.
temp_v0_2[9].v.ob[2] = temp_f10 - 0x1C2; 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; // Move the ray based on the angle
temp_v0_2[11].v.ob[2] = temp_f10 - 0x1C2; 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; // Move the rectangle cast on the floor based on the ray angle
temp_v0_2[12].v.ob[2] = temp_f10 - 0x1C2; vertices[14].v.ob[0] = lightRayBaseX - 825;
vertices[14].v.ob[2] = lightRayBaseZ - 1950;
temp_v0_2[14].v.ob[0] = temp_s0 - 0x339; vertices[15].v.ob[0] = lightRayBaseX - 825;
temp_v0_2[14].v.ob[2] = temp_f10 - 0x79E; vertices[15].v.ob[2] = lightRayBaseZ;
vertices[16].v.ob[0] = lightRayBaseX + 825;
temp_v0_2[15].v.ob[0] = temp_s0 - 0x339; vertices[16].v.ob[2] = lightRayBaseZ;
temp_v0_2[15].v.ob[2] = temp_f10; vertices[17].v.ob[0] = lightRayBaseX + 825;
vertices[17].v.ob[2] = lightRayBaseZ - 1950;
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;
if (this->actor.child != NULL) { if (this->actor.child != NULL) {
Actor* child = this->actor.child; Actor* child = this->actor.child;
child->world.pos.x = this->actor.world.pos.x + (temp_s0 * 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) + (temp_f10 * 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, Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y - 234.0f, this->actor.world.pos.z + 30.0f,
MTXMODE_NEW); MTXMODE_NEW);
Matrix_Scale(this->actor.scale.x, this->actor.scale.y, this->actor.scale.z, MTXMODE_APPLY); 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); 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); 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); gDPSetPrimColor(POLY_XLU_DISP++, 0, 155, 255, lightRayGreenFactor, (u8)(140.0f * lightRayBlueFactor + 115.0f),
gSPDisplayList(POLY_XLU_DISP++, object_knight_DL_018CF0); lightRayAlpha);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 255, 255, maxColor, (u8)((100.0f * sp68) + 65.0f), spD2); gSPDisplayList(POLY_XLU_DISP++, gIkanaThroneRoomLightRayDL);
gSPDisplayList(POLY_XLU_DISP++, object_knight_DL_018DE0); gDPSetPrimColor(POLY_XLU_DISP++, 0, 255, 255, lightRayGreenFactor, (u8)(100.0f * lightRayBlueFactor + 65.0f),
floorLightAlpha);
gSPDisplayList(POLY_XLU_DISP++, gIkanaThroneRoomLightOnFloorDL);
//! FAKE: //! FAKE:
if (1) {} if (1) {}
} }
if (this->unk_144 & 1) { if (this->drawFlags & BOSS06_DRAWFLAG_CURTAIN) {
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(&this->unk_200)); 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, Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y + this->curtainHeight,
MTXMODE_NEW); this->actor.world.pos.z, MTXMODE_NEW);
Matrix_Scale(this->actor.scale.x, this->actor.scale.y, 0.0f, MTXMODE_APPLY); Matrix_Scale(this->actor.scale.x, this->actor.scale.y, 0.0f, MTXMODE_APPLY);
Matrix_RotateYS(this->actor.shape.rot.y, 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); 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, Matrix_Translate(this->actor.world.pos.x, this->actor.world.pos.y + 84.0f, this->actor.world.pos.z - 2.0f,
MTXMODE_NEW); MTXMODE_NEW);
Matrix_RotateYS(this->actor.shape.rot.y, MTXMODE_APPLY); 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); gDPSetEnvColor(POLY_XLU_DISP++, 255, 10, 0, 0);
gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 128, 255, 255, 0, 230); gDPSetPrimColor(POLY_XLU_DISP++, 0x80, 128, 255, 255, 0, 230);
for (i = 0; i < ARRAY_COUNT(D_809F4370); i++) { for (i = 0; i < ARRAY_COUNT(sCurtainFireEffectPositions); i++) {
if ((fabsf(D_809F4370[i].x - 32.0f) < 30.0f) && (fabsf(D_809F4370[i].y - 32.0f) < 30.0f)) { if ((fabsf(sCurtainFireEffectPositions[i].x - 32.0f) < 30.0f) &&
(fabsf(sCurtainFireEffectPositions[i].y - 32.0f) < 30.0f)) {
Matrix_Push(); Matrix_Push();
gSPSegment(POLY_XLU_DISP++, 0x08, gSPSegment(POLY_XLU_DISP++, 0x08,
Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, 0, 0x20, 0x40, 1, 0, Gfx_TwoTexScroll(play->state.gfxCtx, 0, 0, 0, 32, 64, 1, 0,
((play->gameplayFrames + (i * 10)) * -20) % 512, 0x20, 0x80)); ((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, Matrix_Translate((sCurtainFireEffectPositions[i].x - 32.0f) * -2.4f,
MTXMODE_APPLY); (sCurtainFireEffectPositions[i].y - 32.0f) * -2.4f, 0.0f, MTXMODE_APPLY);
Matrix_RotateZF(i * (M_PIf / 64), 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_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), gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
@ -628,21 +728,22 @@ void Boss06_Draw(Actor* thisx, PlayState* play2) {
} }
} }
} else { } else {
spE0 = 7.0f; lightOrbOffsetZ = 7.0f;
} }
} }
if (this->unk_1DC > 0.0f) { if (this->lightOrbScale > 0.0f) {
u8 temp_s2 = (this->unk_1E0 - 50.0f) + (50.0f * sp68); 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, Matrix_Translate(this->actor.world.pos.x + this->arrowHitPos.x,
(this->actor.world.pos.z - 2.0f) + spE0, MTXMODE_NEW); 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); gSPDisplayList(POLY_XLU_DISP++, gLightOrbMaterial1DL);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, (u8)((140.0f * sp68) + 115.0f), temp_s2); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, (u8)(140.0f * lightRayBlueFactor + 115.0f), lightOrbAlpha);
gDPSetEnvColor(POLY_XLU_DISP++, 255, 205, (u8)((100.0f * sp68) + 65.0f), 128); 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); 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); 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 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 { typedef struct Boss06 {
/* 0x000 */ Actor actor; /* 0x000 */ Actor actor;
/* 0x144 */ u8 unk_144; /* 0x144 */ u8 drawFlags;
/* 0x146 */ s16 unk_146; /* 0x146 */ s16 unusedTimer1;
/* 0x148 */ s16 unk_148; /* 0x148 */ s16 unusedTimer2;
/* 0x14C */ ColliderCylinder collider; /* 0x14C */ ColliderCylinder collider;
/* 0x198 */ Boss06ActionFunc actionFunc; /* 0x198 */ Boss06ActionFunc actionFunc;
/* 0x19C */ f32 unk_19C; /* 0x19C */ f32 lightRayBrightness;
/* 0x1A0 */ f32 unk_1A0; /* 0x1A0 */ f32 lightRayTopVerticesOffset;
/* 0x1A4 */ f32 unk_1A4; /* 0x1A4 */ f32 lightRayBaseOffsetZ;
/* 0x1A8 */ f32 unk_1A8; /* 0x1A8 */ f32 curtainHeight;
/* 0x1AC */ f32 unk_1AC; /* 0x1AC */ f32 lensFlareYOffset;
/* 0x1B0 */ f32 unk_1B0; /* 0x1B0 */ Vec3f arrowHitPos;
/* 0x1B4 */ f32 unk_1B4; /* 0x1BC */ Vec3f arrowHitPosScaled;
/* 0x1B8 */ UNK_TYPE1 unk1B8[4]; /* 0x1C8 */ u8 updateFireEffects;
/* 0x1BC */ f32 unk_1BC; /* 0x1C9 */ u8 csState;
/* 0x1C0 */ f32 unk_1C0; /* 0x1CA */ s16 csFrameCount;
/* 0x1C4 */ UNK_TYPE1 unk1C4[4]; /* 0x1CC */ f32 fireEffectDistanceAdd;
/* 0x1C8 */ u8 unk_1C8; /* 0x1D0 */ f32 fireEffectDistanceScale2;
/* 0x1C9 */ u8 unk_1C9; /* 0x1D4 */ f32 fireEffectDistanceScale1;
/* 0x1CA */ s16 unk_1CA; /* 0x1D8 */ f32 fireEffectScale;
/* 0x1CC */ f32 unk_1CC; /* 0x1DC */ f32 lightOrbScale;
/* 0x1D0 */ f32 unk_1D0; /* 0x1E0 */ f32 lightOrbAlphaFactor;
/* 0x1D4 */ f32 unk_1D4; /* 0x1E4 */ f32 lensFlareScale;
/* 0x1D8 */ f32 unk_1D8; // Maybe the texture was given 64-byte alignment instead of 64-bit despite not requiring it?
/* 0x1DC */ f32 unk_1DC; // However alignment > 0x10 inside an actor structure is not enough to guarantee overall memory
/* 0x1E0 */ f32 unk_1E0; // alignment since the zelda arena allocator assumes 0x10 alignment is sufficient for any allocation.
/* 0x1E4 */ f32 unk_1E4; /* 0x1E8 */ UNK_TYPE1 unk_1E8[0x18];
/* 0x1E8 */ UNK_TYPE1 unk1E8[0x15]; union {
/* 0x1FD */ u8 unk_1FD; /* 0x200 */ u8 curtainTexture[BOSS06_CURTAIN_TEX_SIZE];
/* 0x1FE */ u8 unk_1FE; u64 force_structure_alignment; // This buffer is used as a texture so requires 64-bit memory alignment
/* 0x1FF */ u8 unk_1FF; };
/* 0x200 */ u8 unk_200[0x800];
/* 0xA00 */ s16 subCamId; /* 0xA00 */ s16 subCamId;
/* 0xA04 */ Vec3f subCamEye; /* 0xA04 */ Vec3f subCamEye;
/* 0xA10 */ Vec3f subCamAt; /* 0xA10 */ Vec3f subCamAt;
/* 0xA1C */ Vec3f unk_A1C; /* 0xA1C */ Vec3f subCamMaxStep;
/* 0xA28 */ f32 unk_A28; /* 0xA28 */ f32 maxStepScale;
/* 0xA2C */ f32 unk_A2C; /* 0xA2C */ f32 screenFillAlpha;
} Boss06; // size = 0xA30 } Boss06; // size = 0xA30
#endif // Z_BOSS_06_H #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 #ifndef Z_EN_KNIGHT_H
#define Z_EN_KNIGHT_H #define Z_EN_KNIGHT_H
#include "assert.h"
#include "global.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; struct EnKnight;
typedef void (*EnKnightActionFunc)(struct EnKnight*, PlayState*); 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 { typedef struct EnKnight {
/* 0x000 */ Actor actor; /* 0x000 */ Actor actor;
/* 0x144 */ s16 unk_144; /* 0x144 */ u16 curtainsLightRayAngle;
/* 0x146 */ char unk_146[0x2]; /* 0x146 */ s16 randTimer;
/* 0x148 */ u8 unk_148; /* 0x148 */ u8 subAction;
/* 0x149 */ char unk_149[0x8]; /* 0x14A */ s16 timers[3];
/* 0x151 */ u8 unk_151; /* 0x150 */ UNK_TYPE1 unk_150;
/* 0x152 */ char unk_152[0x1]; /* 0x151 */ u8 inCurtainCutscene;
/* 0x153 */ u8 unk_153; /* 0x152 */ u8 doBgChecks;
/* 0x154 */ u8 unk_154; /* 0x153 */ u8 closeCurtainAction;
/* 0x155 */ char unk_155[0x2CB]; /* 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; /* 0x420 */ EnKnightActionFunc actionFunc;
/* 0x424 */ char unk_424[0x25C]; /* 0x424 */ EnKnightActionFunc prevActionFunc;
/* 0x680 */ u8 unk_680; /* 0x428 */ s16 jawRotation;
/* 0x681 */ char unk_681[0x9]; /* 0x42C */ f32 jawRotationAmplitude;
/* 0x68A */ s16 unk_68A; /* 0x430 */ f32 jawRotationAmplitudeTarget;
/* 0x68C */ char pad68C[0x48]; /* 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 } EnKnight; // size = 0x6D4
#endif // Z_EN_KNIGHT_H #endif // Z_EN_KNIGHT_H

View File

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

View File

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