mirror of https://github.com/zeldaret/mm.git
EnBba01 Ok and Documented (#667)
* Decomp Bba_01 * Doc bba01 * Document object_bba * Remove new line * Cleanup/rename EnHy to help differentiate it from overlays * Adjust xml comment * PR suggestions * English is hard * English is hard 2 * Add note about invalid textIds * typo * Fix merge * Remove 0 defines
This commit is contained in:
parent
b949669131
commit
f67ecbc3c2
|
@ -1,56 +1,82 @@
|
||||||
<Root>
|
<Root>
|
||||||
|
<!-- Object for Bomb Shop Lady -->
|
||||||
<File Name="object_bba" Segment="6">
|
<File Name="object_bba" Segment="6">
|
||||||
<DList Name="object_bba_DL_002A80" Offset="0x2A80" />
|
<!-- DLists -->
|
||||||
<DList Name="object_bba_DL_002B70" Offset="0x2B70" />
|
<DList Name="gBbaUpperLegsDL" Offset="0x2A80" />
|
||||||
<DList Name="object_bba_DL_002D88" Offset="0x2D88" />
|
<DList Name="gBbaRightHandDL" Offset="0x2B70" />
|
||||||
<DList Name="object_bba_DL_002E90" Offset="0x2E90" />
|
<DList Name="gBbaRightForearmDL" Offset="0x2D88" />
|
||||||
<DList Name="object_bba_DL_002FA0" Offset="0x2FA0" />
|
<DList Name="gBbaRightUpperArmDL" Offset="0x2E90" />
|
||||||
<DList Name="object_bba_DL_0031B8" Offset="0x31B8" />
|
<DList Name="gBbaLeftHandDL" Offset="0x2FA0" />
|
||||||
<DList Name="object_bba_DL_0032C0" Offset="0x32C0" />
|
<DList Name="gBbaLeftForearmDL" Offset="0x31B8" />
|
||||||
<DList Name="object_bba_DL_0033D0" Offset="0x33D0" />
|
<DList Name="gBbaLeftUpperArmDL" Offset="0x32C0" />
|
||||||
<DList Name="object_bba_DL_003618" Offset="0x3618" />
|
<DList Name="gBbaTorsoDL" Offset="0x33D0" />
|
||||||
<DList Name="object_bba_DL_003760" Offset="0x3760" />
|
<DList Name="gBbaBagDL" Offset="0x3618" />
|
||||||
<DList Name="object_bba_DL_003968" Offset="0x3968" />
|
<DList Name="gBbaNeckDL" Offset="0x3760" />
|
||||||
<DList Name="object_bba_DL_003F68" Offset="0x3F68" />
|
<DList Name="gBbaHeadDL" Offset="0x3968" />
|
||||||
<DList Name="object_bba_DL_004078" Offset="0x4078" />
|
<DList Name="gBbaMiddleLegsDL" Offset="0x3F68" />
|
||||||
<DList Name="object_bba_DL_004180" Offset="0x4180" />
|
<DList Name="gBbaLowerLegsDL" Offset="0x4078" />
|
||||||
<Animation Name="object_bba_Anim_004910" Offset="0x4910" />
|
<DList Name="gBbaFeetDL" Offset="0x4180" />
|
||||||
<Animation Name="object_bba_Anim_005154" Offset="0x5154" />
|
|
||||||
<Animation Name="object_bba_Anim_0058B8" Offset="0x58B8" />
|
<!-- Animations -->
|
||||||
<Animation Name="object_bba_Anim_005DC4" Offset="0x5DC4" />
|
<Animation Name="gBbaWalkingAnim" Offset="0x4910" /> <!-- Looks to be unused -->
|
||||||
<Limb Name="object_bba_Standardlimb_005DE0" Type="Standard" Offset="0x5DE0" />
|
<Animation Name="gBbaKnockedOverAnim" Offset="0x5154" />
|
||||||
<Limb Name="object_bba_Standardlimb_005DEC" Type="Standard" Offset="0x5DEC" />
|
<Animation Name="gBbaLyingDownAnim" Offset="0x58B8" />
|
||||||
<Limb Name="object_bba_Standardlimb_005DF8" Type="Standard" Offset="0x5DF8" />
|
<Animation Name="gBbaIdleHoldingBagAnim" Offset="0x5DC4" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E04" Type="Standard" Offset="0x5E04" />
|
|
||||||
<Limb Name="object_bba_Standardlimb_005E10" Type="Standard" Offset="0x5E10" />
|
<!-- Skeleton -->
|
||||||
<Limb Name="object_bba_Standardlimb_005E1C" Type="Standard" Offset="0x5E1C" />
|
<Limb Name="gBbaUpperLegsLimb" Type="Standard" EnumName="BBA_LIMB_UPPER_LEGS" Offset="0x5DE0" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E28" Type="Standard" Offset="0x5E28" />
|
<Limb Name="gBbaMiddleLegsLimb" Type="Standard" EnumName="BBA_LIMB_MIDDLE_LEGS" Offset="0x5DEC" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E34" Type="Standard" Offset="0x5E34" />
|
<Limb Name="gBbaLowerLegsLimb" Type="Standard" EnumName="BBA_LIMB_LOWER_LEGS" Offset="0x5DF8" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E40" Type="Standard" Offset="0x5E40" />
|
<Limb Name="gBbaFeetLimb" Type="Standard" EnumName="BBA_LIMB_FEET" Offset="0x5E04" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E4C" Type="Standard" Offset="0x5E4C" />
|
<Limb Name="gBbaUpperRootLimb" Type="Standard" EnumName="BBA_LIMB_UPPER_ROOT" Offset="0x5E10" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E58" Type="Standard" Offset="0x5E58" />
|
<Limb Name="gBbaNeckLimb" Type="Standard" EnumName="BBA_LIMB_NECK" Offset="0x5E1C" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E64" Type="Standard" Offset="0x5E64" />
|
<Limb Name="gBbaHeadLimb" Type="Standard" EnumName="BBA_LIMB_HEAD" Offset="0x5E28" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E70" Type="Standard" Offset="0x5E70" />
|
<Limb Name="gBbaBagLimb" Type="Standard" EnumName="BBA_LIMB_BAG" Offset="0x5E34" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E7C" Type="Standard" Offset="0x5E7C" />
|
<Limb Name="gBbaTorsoLimb" Type="Standard" EnumName="BBA_LIMB_TORSO" Offset="0x5E40" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E88" Type="Standard" Offset="0x5E88" />
|
<Limb Name="gBbaLeftUpperArmLimb" Type="Standard" EnumName="BBA_LIMB_LEFT_UPPER_ARM" Offset="0x5E4C" />
|
||||||
<Limb Name="object_bba_Standardlimb_005E94" Type="Standard" Offset="0x5E94" />
|
<Limb Name="gBbaLeftLowerArmRootLimb" Type="Standard" EnumName="BBA_LIMB_LEFT_LOWER_ARM_ROOT" Offset="0x5E58" />
|
||||||
<Limb Name="object_bba_Standardlimb_005EA0" Type="Standard" Offset="0x5EA0" />
|
<Limb Name="gBbaLeftForearmLimb" Type="Standard" EnumName="BBA_LIMB_LEFT_FOREARM" Offset="0x5E64" />
|
||||||
<Skeleton Name="object_bba_Skel_005EF0" Type="Flex" LimbType="Standard" Offset="0x5EF0" />
|
<Limb Name="gBbaLeftHandLimb" Type="Standard" EnumName="BBA_LIMB_LEFT_HAND" Offset="0x5E70" />
|
||||||
<Animation Name="object_bba_Anim_006550" Offset="0x6550" />
|
<Limb Name="gBbaRightUpperArmLimb" Type="Standard" EnumName="BBA_LIMB_RIGHT_UPPER_ARM" Offset="0x5E7C" />
|
||||||
<Animation Name="object_bba_Anim_006B10" Offset="0x6B10" />
|
<Limb Name="gBbaRightLowerArmRootLimb" Type="Standard" EnumName="BBA_LIMB_RIGHT_LOWER_ARM_ROOT" Offset="0x5E88" />
|
||||||
<Texture Name="object_bba_TLUT_006B20" OutName="tlut_006B20" Format="rgba16" Width="16" Height="16" Offset="0x6B20" />
|
<Limb Name="gBbaRightForearmLimb" Type="Standard" EnumName="BBA_LIMB_RIGHT_FOREARM" Offset="0x5E94" />
|
||||||
<!-- <Blob Name="object_bba_Blob_006D20" Size="0x19C0" Offset="0x6D20" /> -->
|
<Limb Name="gBbaRightHandLimb" Type="Standard" EnumName="BBA_LIMB_RIGHT_HAND" Offset="0x5EA0" />
|
||||||
<Texture Name="object_bba_Tex_0086E0" OutName="tex_0086E0" Format="ci8" Width="8" Height="8" Offset="0x86E0" />
|
<Skeleton Name="gBbaSkel" Type="Flex" LimbType="Standard" LimbNone="BBA_LIMB_NONE" LimbMax="BBA_LIMB_MAX" EnumName="BbaLimbs" Offset="0x5EF0" />
|
||||||
<Texture Name="object_bba_Tex_008720" OutName="tex_008720" Format="ci8" Width="32" Height="32" Offset="0x8720" />
|
|
||||||
<Texture Name="object_bba_Tex_008B20" OutName="tex_008B20" Format="ci8" Width="32" Height="32" Offset="0x8B20" />
|
<!-- Animations -->
|
||||||
<Texture Name="object_bba_Tex_008F20" OutName="tex_008F20" Format="ci8" Width="8" Height="8" Offset="0x8F20" />
|
<Animation Name="gBbaIdleAnim" Offset="0x6550" />
|
||||||
<Texture Name="object_bba_Tex_008F60" OutName="tex_008F60" Format="ci8" Width="8" Height="8" Offset="0x8F60" />
|
<Animation Name="gBbaWalkingHoldingBagAnim" Offset="0x6B10" />
|
||||||
<Texture Name="object_bba_Tex_008FA0" OutName="tex_008FA0" Format="ci8" Width="16" Height="16" Offset="0x8FA0" />
|
|
||||||
<Texture Name="object_bba_Tex_0090A0" OutName="tex_0090A0" Format="ci8" Width="16" Height="16" Offset="0x90A0" />
|
<!-- TLUT -->
|
||||||
<Texture Name="object_bba_Tex_0091A0" OutName="tex_0091A0" Format="ci8" Width="16" Height="16" Offset="0x91A0" />
|
<Texture Name="gBbaTLUT" OutName="bba_tlut" Format="rgba16" Width="16" Height="16" Offset="0x6B20" />
|
||||||
<Texture Name="object_bba_Tex_0092A0" OutName="tex_0092A0" Format="rgba16" Width="32" Height="32" Offset="0x92A0" />
|
|
||||||
<Texture Name="object_bba_Tex_009AA0" OutName="tex_009AA0" Format="ci8" Width="16" Height="16" Offset="0x9AA0" />
|
<!-- Unused Textures -->
|
||||||
<Texture Name="object_bba_Tex_009BA0" OutName="tex_009BA0" Format="ci8" Width="32" Height="32" Offset="0x9BA0" />
|
<!-- These are just exact copies of the used textures -->
|
||||||
<Texture Name="object_bba_Tex_009FA0" OutName="tex_009FA0" Format="ci8" Width="16" Height="16" Offset="0x9FA0" />
|
<Texture Name="gBbaUnusedHairSkinTex" OutName="bba_unused_hair_skin" Format="ci8" Width="32" Height="32" Offset="0x6D20" TlutOffset="0x6B20" />
|
||||||
|
<Texture Name="gBbaUnusedEarTex" OutName="bba_unused_ear" Format="ci8" Width="8" Height="8" Offset="0x7120" TlutOffset="0x6B20" />
|
||||||
|
<Texture Name="gBbaUnusedNostrilTex" OutName="bba_unused_nostril" Format="ci8" Width="8" Height="8" Offset="0x7160" TlutOffset="0x6B20" />
|
||||||
|
<Texture Name="gBbaUnusedEyeTex" OutName="bba_unused_eye" Format="rgba16" Width="32" Height="32" Offset="0x71A0"/>
|
||||||
|
<Texture Name="gBbaUnusedWrinklesTex" OutName="bba_unused_wrinkles" Format="ci8" Width="32" Height="32" Offset="0x79A0" TlutOffset="0x6B20" />
|
||||||
|
<Texture Name="gBbaUnusedCheekTex" OutName="bba_unused_cheek" Format="ci8" Width="16" Height="16" Offset="0x7DA0" TlutOffset="0x6B20" />
|
||||||
|
<Texture Name="gBbaUnusedSkinTex" OutName="bba_unused_skin" Format="ci8" Width="8" Height="8" Offset="0x7EA0" TlutOffset="0x6B20" />
|
||||||
|
<Texture Name="gBbaUnusedForeheadTex" OutName="bba_unused_forehead" Format="ci8" Width="32" Height="32" Offset="0x7EE0" TlutOffset="0x6B20" />
|
||||||
|
<Texture Name="gBbaUnusedFingersTex" OutName="bba_unused_fingers" Format="ci8" Width="16" Height="16" Offset="0x82E0" TlutOffset="0x6B20" />
|
||||||
|
<Texture Name="gBbaUnusedShirtTex" OutName="bba_unused_shirt" Format="ci8" Width="16" Height="16" Offset="0x83E0" TlutOffset="0x6B20" />
|
||||||
|
<Texture Name="gBbaUnusedBagTex" OutName="bba_unused_bag" Format="ci8" Width="16" Height="16" Offset="0x84E0" TlutOffset="0x6B20" />
|
||||||
|
<Texture Name="gBbaUnusedSkirtTex" OutName="bba_unused_skirt" Format="ci8" Width="16" Height="16" Offset="0x85E0" TlutOffset="0x6B20" />
|
||||||
|
|
||||||
|
<!-- Textures -->
|
||||||
|
<Texture Name="gBbaSkinTex" OutName="bba_skin" Format="ci8" Width="8" Height="8" Offset="0x86E0" />
|
||||||
|
<Texture Name="gBbaWrinklesTex" OutName="bba_wrinkles" Format="ci8" Width="32" Height="32" Offset="0x8720" />
|
||||||
|
<Texture Name="gBbaHairSkinTex" OutName="bba_hair_skin" Format="ci8" Width="32" Height="32" Offset="0x8B20" />
|
||||||
|
<Texture Name="gBbaNostrilTex" OutName="bba_nostril" Format="ci8" Width="8" Height="8" Offset="0x8F20" />
|
||||||
|
<Texture Name="gBbaEarTex" OutName="bba_ear" Format="ci8" Width="8" Height="8" Offset="0x8F60" />
|
||||||
|
<Texture Name="gBbaFingersTex" OutName="bba_fingers" Format="ci8" Width="16" Height="16" Offset="0x8FA0" />
|
||||||
|
<Texture Name="gBbaBagTex" OutName="bba_bag" Format="ci8" Width="16" Height="16" Offset="0x90A0" />
|
||||||
|
<Texture Name="gBbaSkirtTex" OutName="bba_skirt" Format="ci8" Width="16" Height="16" Offset="0x91A0" />
|
||||||
|
<Texture Name="gBbaEyeTex" OutName="bba_eye" Format="rgba16" Width="32" Height="32" Offset="0x92A0" />
|
||||||
|
<Texture Name="gBbaCheekTex" OutName="bba_cheek" Format="ci8" Width="16" Height="16" Offset="0x9AA0" />
|
||||||
|
<Texture Name="gBbaForeheadTex" OutName="bba_forehead" Format="ci8" Width="32" Height="32" Offset="0x9BA0" />
|
||||||
|
<Texture Name="gBbaShirtTex" OutName="bba_shirt" Format="ci8" Width="16" Height="16" Offset="0x9FA0" />
|
||||||
</File>
|
</File>
|
||||||
</Root>
|
</Root>
|
||||||
|
|
|
@ -24,7 +24,7 @@
|
||||||
<Texture Name="gCneTLUT" OutName="cne_tlut" Format="rgba16" Width="16" Height="16" Offset="0xFC"/>
|
<Texture Name="gCneTLUT" OutName="cne_tlut" Format="rgba16" Width="16" Height="16" Offset="0xFC"/>
|
||||||
<Texture Name="gCneSkinTex" OutName="cne_skin" Format="ci8" Width="8" Height="8" Offset="0x2FC"/>
|
<Texture Name="gCneSkinTex" OutName="cne_skin" Format="ci8" Width="8" Height="8" Offset="0x2FC"/>
|
||||||
<Texture Name="gCneBrownHairTex" OutName="cne_brown_hair" Format="ci8" Width="8" Height="8" Offset="0x33C"/>
|
<Texture Name="gCneBrownHairTex" OutName="cne_brown_hair" Format="ci8" Width="8" Height="8" Offset="0x33C"/>
|
||||||
<Texture Name="gCneHandTex" OutName="cne_hand_tex" Format="ci8" Width="8" Height="8" Offset="0x37C"/>
|
<Texture Name="gCneHandTex" OutName="cne_hand" Format="ci8" Width="8" Height="8" Offset="0x37C"/>
|
||||||
<Texture Name="gCneBrownHairSkinTex" OutName="cne_brown_hair_skin" Format="ci8" Width="8" Height="8" Offset="0x3BC"/>
|
<Texture Name="gCneBrownHairSkinTex" OutName="cne_brown_hair_skin" Format="ci8" Width="8" Height="8" Offset="0x3BC"/>
|
||||||
<Texture Name="gCneBrownHairFaceTex" OutName="cne_brown_hair_face" Format="ci8" Width="8" Height="16" Offset="0x3FC"/>
|
<Texture Name="gCneBrownHairFaceTex" OutName="cne_brown_hair_face" Format="ci8" Width="8" Height="16" Offset="0x3FC"/>
|
||||||
<Texture Name="gCneDressTex" OutName="cne_dress" Format="i8" Width="8" Height="8" Offset="0x47C"/>
|
<Texture Name="gCneDressTex" OutName="cne_dress" Format="i8" Width="8" Height="8" Offset="0x47C"/>
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
#ifndef Z_EN_HY_H
|
#ifndef Z_EN_HY_CODE_H
|
||||||
#define Z_EN_HY_H
|
#define Z_EN_HY_CODE_H
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "overlays/actors/ovl_En_Door/z_en_door.h"
|
||||||
|
|
||||||
struct EnHy;
|
struct EnHy;
|
||||||
|
|
||||||
#define ENHY_LIMB_MAX 16
|
#define ENHY_LIMB_MAX 16
|
||||||
|
|
||||||
|
//! TODO: Better animaion enum names when animations are documented
|
||||||
typedef enum {
|
typedef enum {
|
||||||
/* 0 */ ENHY_ANIMATION_AOB_0,
|
/* 0 */ ENHY_ANIMATION_AOB_0,
|
||||||
/* 1 */ ENHY_ANIMATION_BOJ_1,
|
/* 1 */ ENHY_ANIMATION_BOJ_1,
|
||||||
|
@ -74,12 +76,12 @@ extern s8 gEnHyBodyPartsIndex[];
|
||||||
extern u8 gEnHyShadowSize[];
|
extern u8 gEnHyShadowSize[];
|
||||||
|
|
||||||
s32 EnHy_ChangeAnim(SkelAnime* skelAnime, s16 animIndex);
|
s32 EnHy_ChangeAnim(SkelAnime* skelAnime, s16 animIndex);
|
||||||
struct EnDoor* EnHy_FindNearestDoor(Actor* actor, GlobalContext* globalCtx);
|
EnDoor* EnHy_FindNearestDoor(Actor* actor, GlobalContext* globalCtx);
|
||||||
void EnHy_ChangeObjectAndAnim(EnHy* enHy, GlobalContext* globalCtx, s16 animIndex);
|
void EnHy_ChangeObjectAndAnim(EnHy* enHy, GlobalContext* globalCtx, s16 animIndex);
|
||||||
s32 EnHy_UpdateSkelAnime(EnHy* enHy, GlobalContext* globalCtx);
|
s32 EnHy_UpdateSkelAnime(EnHy* enHy, GlobalContext* globalCtx);
|
||||||
void EnHy_Blink(EnHy* enHy, s32 arg1);
|
void EnHy_Blink(EnHy* enHy, s32 arg1);
|
||||||
s32 EnHy_Init(EnHy* enHy, GlobalContext* globalCtx, FlexSkeletonHeader* skeletonHeaderSeg, s16 animIndex);
|
s32 EnHy_Init(EnHy* enHy, GlobalContext* globalCtx, FlexSkeletonHeader* skeletonHeaderSeg, s16 animIndex);
|
||||||
void func_800F0BB4(EnHy* enHy, GlobalContext* globalCtx, struct EnDoor* door, s16 arg3, s16 arg4);
|
void func_800F0BB4(EnHy* enHy, GlobalContext* globalCtx, EnDoor* door, s16 arg3, s16 arg4);
|
||||||
s32 func_800F0CE4(EnHy* enHy, GlobalContext* globalCtx, ActorFunc draw, s16 arg3, s16 arg4, f32 arg5);
|
s32 func_800F0CE4(EnHy* enHy, GlobalContext* globalCtx, ActorFunc draw, s16 arg3, s16 arg4, f32 arg5);
|
||||||
s32 func_800F0DD4(EnHy* enHy, GlobalContext* globalCtx, s16 arg2, s16 arg3);
|
s32 func_800F0DD4(EnHy* enHy, GlobalContext* globalCtx, s16 arg2, s16 arg3);
|
||||||
s32 EnHy_SetPointFowards(EnHy* enHy, GlobalContext* globalCtx, f32 gravity, s16 animIndex);
|
s32 EnHy_SetPointFowards(EnHy* enHy, GlobalContext* globalCtx, f32 gravity, s16 animIndex);
|
||||||
|
@ -89,4 +91,4 @@ s32 EnHy_MoveBackwards(EnHy* enHy, f32 speedTarget);
|
||||||
void EnHy_UpdateCollider(EnHy* enHy, GlobalContext* globalCtx);
|
void EnHy_UpdateCollider(EnHy* enHy, GlobalContext* globalCtx);
|
||||||
s32 EnHy_PlayWalkingSound(EnHy* enHy, GlobalContext* globalCtx, f32 distAboveThreshold);
|
s32 EnHy_PlayWalkingSound(EnHy* enHy, GlobalContext* globalCtx, f32 distAboveThreshold);
|
||||||
|
|
||||||
#endif // Z_EN_HY_H
|
#endif // Z_EN_HY_CODE_H
|
5
spec
5
spec
|
@ -467,7 +467,7 @@ beginseg
|
||||||
include "build/data/code/z_eff_footmark.data.o"
|
include "build/data/code/z_eff_footmark.data.o"
|
||||||
include "build/src/code/z_sound_source.o"
|
include "build/src/code/z_sound_source.o"
|
||||||
include "build/src/code/z_elf_message.o"
|
include "build/src/code/z_elf_message.o"
|
||||||
include "build/src/code/z_en_hy.o"
|
include "build/src/code/z_en_hy_code.o"
|
||||||
include "build/src/code/z_face_reaction.o"
|
include "build/src/code/z_face_reaction.o"
|
||||||
include "build/src/code/z_env_flags.o"
|
include "build/src/code/z_env_flags.o"
|
||||||
include "build/src/code/z_eventmgr.o"
|
include "build/src/code/z_eventmgr.o"
|
||||||
|
@ -2477,8 +2477,7 @@ beginseg
|
||||||
name "ovl_En_Bba_01"
|
name "ovl_En_Bba_01"
|
||||||
compress
|
compress
|
||||||
include "build/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.o"
|
include "build/src/overlays/actors/ovl_En_Bba_01/z_en_bba_01.o"
|
||||||
include "build/data/ovl_En_Bba_01/ovl_En_Bba_01.data.o"
|
include "build/src/overlays/actors/ovl_En_Bba_01/ovl_En_Bba_01_reloc.o"
|
||||||
include "build/data/ovl_En_Bba_01/ovl_En_Bba_01.reloc.o"
|
|
||||||
endseg
|
endseg
|
||||||
|
|
||||||
beginseg
|
beginseg
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* Description: Unused System for NPCs (includes animation, door interaction, blinking, pathing, and collider helpers)
|
* Description: Unused System for NPCs (includes animation, door interaction, blinking, pathing, and collider helpers)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "z_en_hy.h"
|
#include "z_en_hy_code.h"
|
||||||
#include "overlays/actors/ovl_En_Door/z_en_door.h"
|
#include "overlays/actors/ovl_En_Door/z_en_door.h"
|
||||||
#include "objects/object_aob/object_aob.h"
|
#include "objects/object_aob/object_aob.h"
|
||||||
#include "objects/object_bba/object_bba.h"
|
#include "objects/object_bba/object_bba.h"
|
||||||
|
@ -18,7 +18,7 @@ static AnimationInfoS sAnimations[] = {
|
||||||
{ &object_boj_Anim_001908, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
{ &object_boj_Anim_001908, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||||
{ &object_boj_Anim_001908, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
{ &object_boj_Anim_001908, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
||||||
{ &object_boj_Anim_0008C0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
{ &object_boj_Anim_0008C0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||||
{ &object_bba_Anim_005DC4, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
{ &gBbaIdleHoldingBagAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||||
{ &object_bji_Anim_000FDC, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
{ &object_bji_Anim_000FDC, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||||
{ &object_bji_Anim_000AB0, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
{ &object_bji_Anim_000AB0, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
||||||
{ &object_bji_Anim_00066C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
{ &object_bji_Anim_00066C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
|
@ -42,12 +42,12 @@ const ActorInit En_Baba_InitVars = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static AnimationInfo sAnimations[] = {
|
static AnimationInfo sAnimations[] = {
|
||||||
{ &object_bba_Anim_005DC4, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
{ &gBbaIdleHoldingBagAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||||
{ &object_bba_Anim_006550, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
{ &gBbaIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||||
{ &object_bba_Anim_006B10, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
{ &gBbaWalkingHoldingBagAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||||
{ &object_bba_Anim_005154, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
{ &gBbaKnockedOverAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||||
{ &object_bba_Anim_0058B8, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
{ &gBbaLyingDownAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||||
{ &object_bba_Anim_004910, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
{ &gBbaWalkingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||||
};
|
};
|
||||||
|
|
||||||
static ColliderCylinderInit sCylinderInit = {
|
static ColliderCylinderInit sCylinderInit = {
|
||||||
|
@ -429,7 +429,7 @@ void func_80BA93AC(EnBaba* this, GlobalContext* globalCtx) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void func_80BA9480(EnBaba* this, GlobalContext* globalCtx) {
|
void func_80BA9480(EnBaba* this, GlobalContext* globalCtx) {
|
||||||
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &object_bba_Skel_005EF0, &object_bba_Anim_006B10, this->jointTable,
|
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gBbaSkel, &gBbaWalkingHoldingBagAnim, this->jointTable,
|
||||||
this->morphTable, 0x12);
|
this->morphTable, 0x12);
|
||||||
|
|
||||||
this->actor.draw = EnBaba_Draw;
|
this->actor.draw = EnBaba_Draw;
|
||||||
|
@ -741,7 +741,7 @@ void EnBaba_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
func_8012C5B0(globalCtx->state.gfxCtx);
|
func_8012C5B0(globalCtx->state.gfxCtx);
|
||||||
|
|
||||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(&object_bba_Tex_0092A0));
|
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(gBbaEyeTex));
|
||||||
|
|
||||||
SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
|
SkelAnime_DrawTransformFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
|
||||||
this->skelAnime.dListCount, EnBaba_OverrideLimbDraw, EnBaba_PostLimbDraw,
|
this->skelAnime.dListCount, EnBaba_OverrideLimbDraw, EnBaba_PostLimbDraw,
|
||||||
|
|
|
@ -2,9 +2,18 @@
|
||||||
* File: z_en_bba_01.c
|
* File: z_en_bba_01.c
|
||||||
* Overlay: ovl_En_Bba_01
|
* Overlay: ovl_En_Bba_01
|
||||||
* Description: Unused Bomb Shop Lady NPC
|
* Description: Unused Bomb Shop Lady NPC
|
||||||
|
*
|
||||||
|
* Note: This actor was probably written with OOT's object_bba's skeleton in mind, and so this actor is very bugged.
|
||||||
|
*
|
||||||
|
* The main offender is that gBbaSkel has 18 limbs, while the system used (EnHy) expects 16 (see @bug in FinishInit
|
||||||
|
* below).
|
||||||
|
*
|
||||||
|
* The draw functions also use different limbs than expected, which results in, for example, EnBba01's right arm and bag
|
||||||
|
* following the player instead of her head and torso.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "z_en_bba_01.h"
|
#include "z_en_bba_01.h"
|
||||||
|
#include "objects/object_bba/object_bba.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10)
|
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10)
|
||||||
|
|
||||||
|
@ -15,12 +24,10 @@ void EnBba01_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
||||||
void EnBba01_Update(Actor* thisx, GlobalContext* globalCtx);
|
void EnBba01_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||||
void EnBba01_Draw(Actor* thisx, GlobalContext* globalCtx);
|
void EnBba01_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||||
|
|
||||||
void func_809CC2F0(EnBba01* this, GlobalContext* globalCtx);
|
void EnBba01_Walk(EnHy* this, GlobalContext* globalCtx);
|
||||||
void func_809CC370(EnBba01* this, GlobalContext* globalCtx);
|
void EnBba01_FaceFoward(EnHy* this, GlobalContext* globalCtx);
|
||||||
void func_809CC3A8(EnBba01* this, GlobalContext* globalCtx);
|
void EnBba01_Talk(EnHy* this, GlobalContext* globalCtx);
|
||||||
void func_809CC3CC(EnBba01* this, GlobalContext* globalCtx);
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
const ActorInit En_Bba_01_InitVars = {
|
const ActorInit En_Bba_01_InitVars = {
|
||||||
ACTOR_EN_BBA_01,
|
ACTOR_EN_BBA_01,
|
||||||
ACTORCAT_NPC,
|
ACTORCAT_NPC,
|
||||||
|
@ -33,84 +40,296 @@ const ActorInit En_Bba_01_InitVars = {
|
||||||
(ActorFunc)EnBba01_Draw,
|
(ActorFunc)EnBba01_Draw,
|
||||||
};
|
};
|
||||||
|
|
||||||
// static ColliderCylinderInit sCylinderInit = {
|
static ColliderCylinderInit sCylinderInit = {
|
||||||
static ColliderCylinderInit D_809CCC80 = {
|
{
|
||||||
{ COLTYPE_HIT0, AT_NONE, AC_ON | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
COLTYPE_HIT0,
|
||||||
{ ELEMTYPE_UNK1, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
AT_NONE,
|
||||||
|
AC_ON | AC_TYPE_PLAYER,
|
||||||
|
OC1_ON | OC1_TYPE_ALL,
|
||||||
|
OC2_TYPE_1,
|
||||||
|
COLSHAPE_CYLINDER,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ELEMTYPE_UNK1,
|
||||||
|
{ 0x00000000, 0x00, 0x00 },
|
||||||
|
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||||
|
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||||
|
BUMP_ON,
|
||||||
|
OCELEM_ON,
|
||||||
|
},
|
||||||
{ 18, 64, 0, { 0, 0, 0 } },
|
{ 18, 64, 0, { 0, 0, 0 } },
|
||||||
};
|
};
|
||||||
|
|
||||||
// sColChkInfoInit
|
static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE };
|
||||||
static CollisionCheckInfoInit2 D_809CCCAC = { 0, 0, 0, 0, MASS_IMMOVABLE };
|
|
||||||
|
|
||||||
// static DamageTable sDamageTable = {
|
static DamageTable sDamageTable = {
|
||||||
static DamageTable D_809CCCB8 = {
|
/* Deku Nut */ DMG_ENTRY(0, 0),
|
||||||
/* Deku Nut */ DMG_ENTRY(0, 0x0),
|
/* Deku Stick */ DMG_ENTRY(0, 0),
|
||||||
/* Deku Stick */ DMG_ENTRY(0, 0x0),
|
/* Horse trample */ DMG_ENTRY(0, 0),
|
||||||
/* Horse trample */ DMG_ENTRY(0, 0x0),
|
/* Explosives */ DMG_ENTRY(0, 0),
|
||||||
/* Explosives */ DMG_ENTRY(0, 0x0),
|
/* Zora boomerang */ DMG_ENTRY(0, 0),
|
||||||
/* Zora boomerang */ DMG_ENTRY(0, 0x0),
|
/* Normal arrow */ DMG_ENTRY(0, 0),
|
||||||
/* Normal arrow */ DMG_ENTRY(0, 0x0),
|
/* UNK_DMG_0x06 */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x06 */ DMG_ENTRY(0, 0x0),
|
/* Hookshot */ DMG_ENTRY(0, 0),
|
||||||
/* Hookshot */ DMG_ENTRY(0, 0x0),
|
/* Goron punch */ DMG_ENTRY(0, 0),
|
||||||
/* Goron punch */ DMG_ENTRY(0, 0x0),
|
/* Sword */ DMG_ENTRY(0, 0),
|
||||||
/* Sword */ DMG_ENTRY(0, 0x0),
|
/* Goron pound */ DMG_ENTRY(0, 0),
|
||||||
/* Goron pound */ DMG_ENTRY(0, 0x0),
|
/* Fire arrow */ DMG_ENTRY(0, 0),
|
||||||
/* Fire arrow */ DMG_ENTRY(0, 0x0),
|
/* Ice arrow */ DMG_ENTRY(0, 0),
|
||||||
/* Ice arrow */ DMG_ENTRY(0, 0x0),
|
/* Light arrow */ DMG_ENTRY(0, 0),
|
||||||
/* Light arrow */ DMG_ENTRY(0, 0x0),
|
/* Goron spikes */ DMG_ENTRY(0, 0),
|
||||||
/* Goron spikes */ DMG_ENTRY(0, 0x0),
|
/* Deku spin */ DMG_ENTRY(0, 0),
|
||||||
/* Deku spin */ DMG_ENTRY(0, 0x0),
|
/* Deku bubble */ DMG_ENTRY(0, 0),
|
||||||
/* Deku bubble */ DMG_ENTRY(0, 0x0),
|
/* Deku launch */ DMG_ENTRY(0, 0),
|
||||||
/* Deku launch */ DMG_ENTRY(0, 0x0),
|
/* UNK_DMG_0x12 */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x12 */ DMG_ENTRY(0, 0x0),
|
/* Zora barrier */ DMG_ENTRY(0, 0),
|
||||||
/* Zora barrier */ DMG_ENTRY(0, 0x0),
|
/* Normal shield */ DMG_ENTRY(0, 0),
|
||||||
/* Normal shield */ DMG_ENTRY(0, 0x0),
|
/* Light ray */ DMG_ENTRY(0, 0),
|
||||||
/* Light ray */ DMG_ENTRY(0, 0x0),
|
/* Thrown object */ DMG_ENTRY(0, 0),
|
||||||
/* Thrown object */ DMG_ENTRY(0, 0x0),
|
/* Zora punch */ DMG_ENTRY(0, 0),
|
||||||
/* Zora punch */ DMG_ENTRY(0, 0x0),
|
/* Spin attack */ DMG_ENTRY(0, 0),
|
||||||
/* Spin attack */ DMG_ENTRY(0, 0x0),
|
/* Sword beam */ DMG_ENTRY(0, 0),
|
||||||
/* Sword beam */ DMG_ENTRY(0, 0x0),
|
/* Normal Roll */ DMG_ENTRY(0, 0),
|
||||||
/* Normal Roll */ DMG_ENTRY(0, 0x0),
|
/* UNK_DMG_0x1B */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x1B */ DMG_ENTRY(0, 0x0),
|
/* UNK_DMG_0x1C */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x1C */ DMG_ENTRY(0, 0x0),
|
/* Unblockable */ DMG_ENTRY(0, 0),
|
||||||
/* Unblockable */ DMG_ENTRY(0, 0x0),
|
/* UNK_DMG_0x1E */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x1E */ DMG_ENTRY(0, 0x0),
|
/* Powder Keg */ DMG_ENTRY(0, 0),
|
||||||
/* Powder Keg */ DMG_ENTRY(0, 0x0),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
u16 D_809CCCD8[] = { 4000, 4, 1, 3, 6000, 4, 1, 6, 4000, 4, 1, 3, 6000, 4, 1, 6 };
|
||||||
|
|
||||||
extern ColliderCylinderInit D_809CCC80;
|
void EnBba01_UpdateModel(EnBba01* this, GlobalContext* globalCtx) {
|
||||||
extern CollisionCheckInfoInit2 D_809CCCAC;
|
Player* player = GET_PLAYER(globalCtx);
|
||||||
extern DamageTable D_809CCCB8;
|
Vec3f focus;
|
||||||
|
|
||||||
extern UNK_TYPE D_06005EF0;
|
EnHy_UpdateSkelAnime(&this->enHy, globalCtx);
|
||||||
|
if (func_8013D5E8(this->enHy.actor.shape.rot.y, 0x36B0, this->enHy.actor.yawTowardsPlayer)) {
|
||||||
|
focus.x = player->actor.world.pos.x;
|
||||||
|
focus.y = player->bodyPartsPos[7].y + 3.0f;
|
||||||
|
focus.z = player->actor.world.pos.z;
|
||||||
|
func_8013D2E0(&focus, &this->enHy.actor.focus.pos, &this->enHy.actor.shape.rot, &this->enHy.focusTarget,
|
||||||
|
&this->enHy.headRot, &this->enHy.torsoRot, D_809CCCD8);
|
||||||
|
} else {
|
||||||
|
Math_SmoothStepToS(&this->enHy.focusTarget.x, 0, 4, 0x3E8, 1);
|
||||||
|
Math_SmoothStepToS(&this->enHy.focusTarget.y, 0, 4, 0x3E8, 1);
|
||||||
|
Math_SmoothStepToS(&this->enHy.headRot.x, 0, 4, 0x3E8, 1);
|
||||||
|
Math_SmoothStepToS(&this->enHy.headRot.y, 0, 4, 0x3E8, 1);
|
||||||
|
Math_SmoothStepToS(&this->enHy.torsoRot.x, 0, 4, 0x3E8, 1);
|
||||||
|
Math_SmoothStepToS(&this->enHy.torsoRot.y, 0, 4, 0x3E8, 1);
|
||||||
|
}
|
||||||
|
SubS_FillLimbRotTables(globalCtx, this->enHy.limbRotTableY, this->enHy.limbRotTableZ,
|
||||||
|
ARRAY_COUNT(this->enHy.limbRotTableY));
|
||||||
|
EnHy_UpdateCollider(&this->enHy, globalCtx);
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/func_809CC060.s")
|
s32 EnBba01_TestIsTalking(EnBba01* this, GlobalContext* globalCtx) {
|
||||||
|
s32 isTalking = false;
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/func_809CC1D4.s")
|
if (Actor_ProcessTalkRequest(&this->enHy.actor, &globalCtx->state)) {
|
||||||
|
isTalking = true;
|
||||||
|
this->enHy.textId = 0x10B9; // Invalid textId, produces empty textbox
|
||||||
|
this->enHy.tmpFocusTarget = this->enHy.focusTarget;
|
||||||
|
this->enHy.tmpHeadRot = this->enHy.headRot;
|
||||||
|
this->enHy.tmpTorsoRot = this->enHy.torsoRot;
|
||||||
|
this->enHy.tmpActionFunc = this->enHy.actionFunc;
|
||||||
|
this->enHy.actionFunc = EnBba01_Talk;
|
||||||
|
}
|
||||||
|
return isTalking;
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/func_809CC270.s")
|
s32 func_809CC270(EnBba01* this, GlobalContext* globalCtx) {
|
||||||
|
s16 x;
|
||||||
|
s16 y;
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/func_809CC2F0.s")
|
Actor_GetScreenPos(globalCtx, &this->enHy.actor, &x, &y);
|
||||||
|
//! @bug: Both x and y conditionals are always true, || should be an &&
|
||||||
|
if (!this->enHy.waitingOnInit && ((x >= 0) || (x < SCREEN_WIDTH)) && ((y >= 0) || (y < SCREEN_HEIGHT))) {
|
||||||
|
func_800B85E0(&this->enHy.actor, globalCtx, 30.0f, EXCH_ITEM_2E);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/func_809CC370.s")
|
void EnBba01_FinishInit(EnHy* this, GlobalContext* globalCtx) {
|
||||||
|
//! @bug: gBbaSkel does not match EnHy's skeleton assumptions.
|
||||||
|
//! Since gBbaSkel has more limbs than expected, joint and morph tables will overflow
|
||||||
|
if (EnHy_Init(this, globalCtx, &gBbaSkel, ENHY_ANIMATION_BBA_6)) {
|
||||||
|
this->actor.flags |= ACTOR_FLAG_1;
|
||||||
|
this->actor.draw = EnBba01_Draw;
|
||||||
|
this->waitingOnInit = false;
|
||||||
|
if (ENBBA01_GET_PATH(&this->actor) == ENBBA01_NO_PATH) {
|
||||||
|
this->actionFunc = EnBba01_FaceFoward;
|
||||||
|
} else {
|
||||||
|
this->actionFunc = EnBba01_Walk;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/func_809CC3A8.s")
|
void EnBba01_Walk(EnHy* this, GlobalContext* globalCtx) {
|
||||||
|
if (EnHy_MoveForwards(this, 1.0f)) {
|
||||||
|
this->curPoint = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/func_809CC3CC.s")
|
void EnBba01_FaceFoward(EnHy* this, GlobalContext* globalCtx) {
|
||||||
|
this->actor.shape.rot = this->actor.world.rot;
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/EnBba01_Init.s")
|
void EnBba01_Talk(EnHy* this, GlobalContext* globalCtx) {
|
||||||
|
s16 yaw;
|
||||||
|
u8 talkState;
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/EnBba01_Destroy.s")
|
Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 4, 0xFA0, 1);
|
||||||
|
talkState = Message_GetState(&globalCtx->msgCtx);
|
||||||
|
this->inMsgState3 = (talkState == 3) ? true : false;
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/EnBba01_Update.s")
|
switch (talkState) {
|
||||||
|
case 0:
|
||||||
|
yaw = ABS_ALT(this->actor.shape.rot.y - this->actor.yawTowardsPlayer);
|
||||||
|
if (yaw < 0x64) {
|
||||||
|
func_801518B0(globalCtx, this->textId, NULL);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
this->actor.textId = 0;
|
||||||
|
this->focusTarget = this->tmpFocusTarget;
|
||||||
|
this->headRot = this->tmpHeadRot;
|
||||||
|
this->torsoRot = this->tmpTorsoRot;
|
||||||
|
this->actor.shape.rot.y = this->actor.world.rot.y;
|
||||||
|
this->actionFunc = this->tmpActionFunc;
|
||||||
|
this->tmpActionFunc = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/func_809CC6F0.s")
|
void EnBba01_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
|
s32 pad;
|
||||||
|
EnBba01* this = THIS;
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/func_809CC984.s")
|
this->enHy.animObjIndex = func_8013D924(OBJECT_BBA, globalCtx);
|
||||||
|
this->enHy.headObjIndex = func_8013D924(OBJECT_BBA, globalCtx);
|
||||||
|
this->enHy.skelUpperObjIndex = func_8013D924(OBJECT_BBA, globalCtx);
|
||||||
|
this->enHy.skelLowerObjIndex = func_8013D924(OBJECT_BBA, globalCtx);
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/func_809CCA5C.s")
|
if ((this->enHy.animObjIndex < 0) || (this->enHy.headObjIndex < 0) || (this->enHy.skelUpperObjIndex < 0) ||
|
||||||
|
(this->enHy.skelLowerObjIndex < 0)) {
|
||||||
|
Actor_MarkForDeath(&this->enHy.actor);
|
||||||
|
}
|
||||||
|
this->enHy.actor.draw = NULL;
|
||||||
|
Collider_InitCylinder(globalCtx, &this->enHy.collider);
|
||||||
|
Collider_SetCylinder(globalCtx, &this->enHy.collider, &this->enHy.actor, &sCylinderInit);
|
||||||
|
CollisionCheck_SetInfo2(&this->enHy.actor.colChkInfo, &sDamageTable, &sColChkInfoInit);
|
||||||
|
this->enHy.actor.flags &= ~ACTOR_FLAG_1;
|
||||||
|
this->enHy.path = func_8013D648(globalCtx, ENBBA01_GET_PATH(&this->enHy.actor), ENBBA01_NO_PATH);
|
||||||
|
this->enHy.waitingOnInit = true;
|
||||||
|
Actor_SetScale(&this->enHy.actor, 0.01f);
|
||||||
|
this->enHy.actionFunc = EnBba01_FinishInit;
|
||||||
|
}
|
||||||
|
|
||||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Bba_01/EnBba01_Draw.s")
|
void EnBba01_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
|
EnBba01* this = THIS;
|
||||||
|
|
||||||
|
Collider_DestroyCylinder(globalCtx, &this->enHy.collider);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnBba01_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
|
EnBba01* this = THIS;
|
||||||
|
|
||||||
|
EnBba01_TestIsTalking(this, globalCtx);
|
||||||
|
this->enHy.actionFunc(&this->enHy, globalCtx);
|
||||||
|
Actor_UpdateBgCheckInfo(globalCtx, &this->enHy.actor, 0.0f, 0.0f, 0.0f, 4);
|
||||||
|
EnBba01_UpdateModel(this, globalCtx);
|
||||||
|
func_809CC270(this, globalCtx);
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 EnBba01_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot,
|
||||||
|
Actor* thisx) {
|
||||||
|
EnBba01* this = THIS;
|
||||||
|
s8 bodyPart;
|
||||||
|
Vec3f zeroVec = { 0.0f, 0.0f, 0.0f };
|
||||||
|
|
||||||
|
bodyPart = gEnHyBodyParts[limbIndex];
|
||||||
|
if (bodyPart >= 0) {
|
||||||
|
Matrix_MultiplyVector3fByState(&zeroVec, &this->enHy.bodyPartsPos[bodyPart]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (limbIndex == BBA_LIMB_RIGHT_LOWER_ARM_ROOT) {
|
||||||
|
OPEN_DISPS(globalCtx->state.gfxCtx);
|
||||||
|
gSPSegment(POLY_OPA_DISP++, 0x06, globalCtx->objectCtx.status[this->enHy.headObjIndex].segment);
|
||||||
|
gSegments[6] = PHYSICAL_TO_VIRTUAL(globalCtx->objectCtx.status[this->enHy.headObjIndex].segment);
|
||||||
|
gSegments[6] = PHYSICAL_TO_VIRTUAL(globalCtx->objectCtx.status[this->enHy.skelLowerObjIndex].segment);
|
||||||
|
CLOSE_DISPS(globalCtx->state.gfxCtx);
|
||||||
|
}
|
||||||
|
if (limbIndex == BBA_LIMB_RIGHT_LOWER_ARM_ROOT) {
|
||||||
|
Matrix_InsertTranslation(1500.0f, 0.0f, 0.0f, MTXMODE_APPLY);
|
||||||
|
Matrix_InsertXRotation_s(this->enHy.headRot.y, MTXMODE_APPLY);
|
||||||
|
Matrix_InsertZRotation_s(-this->enHy.headRot.x, MTXMODE_APPLY);
|
||||||
|
Matrix_InsertTranslation(-1500.0f, 0.0f, 0.0f, MTXMODE_APPLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (limbIndex == BBA_LIMB_BAG) {
|
||||||
|
Matrix_InsertXRotation_s(-this->enHy.torsoRot.y, MTXMODE_APPLY);
|
||||||
|
Matrix_InsertZRotation_s(-this->enHy.torsoRot.x, MTXMODE_APPLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((limbIndex == BBA_LIMB_RIGHT_LOWER_ARM_ROOT) && this->enHy.inMsgState3 &&
|
||||||
|
((globalCtx->state.frames % 2) == 0)) {
|
||||||
|
Matrix_InsertTranslation(40.0f, 0.0f, 0.0f, MTXMODE_APPLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((limbIndex == BBA_LIMB_BAG) || (limbIndex == BBA_LIMB_TORSO) || (limbIndex == BBA_LIMB_LEFT_FOREARM)) {
|
||||||
|
rot->y += (s16)(Math_SinS(this->enHy.limbRotTableY[limbIndex]) * 200.0f);
|
||||||
|
rot->z += (s16)(Math_CosS(this->enHy.limbRotTableZ[limbIndex]) * 200.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnBba01_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||||
|
EnBba01* this = THIS;
|
||||||
|
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
|
||||||
|
Vec3f zeroVec = { 0.0f, 0.0f, 0.0f };
|
||||||
|
|
||||||
|
if (limbIndex == BBA_LIMB_HEAD) {
|
||||||
|
OPEN_DISPS(globalCtx->state.gfxCtx);
|
||||||
|
gSPSegment(POLY_OPA_DISP++, 0x06, globalCtx->objectCtx.status[this->enHy.skelUpperObjIndex].segment);
|
||||||
|
gSegments[0x06] = PHYSICAL_TO_VIRTUAL(globalCtx->objectCtx.status[this->enHy.skelUpperObjIndex].segment);
|
||||||
|
CLOSE_DISPS(globalCtx->state.gfxCtx);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (limbIndex == BBA_LIMB_RIGHT_LOWER_ARM_ROOT) {
|
||||||
|
Matrix_MultiplyVector3fByState(&zeroVec, &this->enHy.actor.focus.pos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnBba01_TransformLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Actor* thisx) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnBba01_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||||
|
EnBba01* this = THIS;
|
||||||
|
s32 i;
|
||||||
|
u8* shadowTex = GRAPH_ALLOC(globalCtx->state.gfxCtx, sizeof(u8[64][64]));
|
||||||
|
u8* shadowTexIter;
|
||||||
|
|
||||||
|
OPEN_DISPS(globalCtx->state.gfxCtx);
|
||||||
|
|
||||||
|
func_8012C28C(globalCtx->state.gfxCtx);
|
||||||
|
gSPSegment(POLY_OPA_DISP++, 0x08, Gfx_EnvColor(globalCtx->state.gfxCtx, 255, 255, 255, 0));
|
||||||
|
gSPSegment(POLY_OPA_DISP++, 0x09, Gfx_EnvColor(globalCtx->state.gfxCtx, 55, 55, 255, 0));
|
||||||
|
gDPPipeSync(POLY_OPA_DISP++);
|
||||||
|
SkelAnime_DrawTransformFlexOpa(globalCtx, this->enHy.skelAnime.skeleton, this->enHy.skelAnime.jointTable,
|
||||||
|
this->enHy.skelAnime.dListCount, EnBba01_OverrideLimbDraw, EnBba01_PostLimbDraw,
|
||||||
|
EnBba01_TransformLimbDraw, &this->enHy.actor);
|
||||||
|
Matrix_InsertXRotation_s(0, MTXMODE_NEW);
|
||||||
|
|
||||||
|
for (i = 0, shadowTexIter = shadowTex; i < (s32)sizeof(u8[64][64]); i++) {
|
||||||
|
*shadowTexIter++ = 0;
|
||||||
|
}
|
||||||
|
for (i = 0; i < 5; i++) {
|
||||||
|
func_8013CD64(this->enHy.bodyPartsPos, &this->enHy.actor.world.pos, shadowTex, i / 5.0f,
|
||||||
|
ARRAY_COUNT(this->enHy.bodyPartsPos), gEnHyShadowSize, gEnHyBodyPartsIndex);
|
||||||
|
}
|
||||||
|
func_8013CF04(&this->enHy.actor, &globalCtx->state.gfxCtx, shadowTex);
|
||||||
|
|
||||||
|
CLOSE_DISPS(globalCtx->state.gfxCtx);
|
||||||
|
}
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
#ifndef Z_EN_BBA_01_H
|
#ifndef Z_EN_BBA_01_H
|
||||||
#define Z_EN_BBA_01_H
|
#define Z_EN_BBA_01_H
|
||||||
|
|
||||||
#include "global.h"
|
#include "z_en_hy_code.h"
|
||||||
|
|
||||||
struct EnBba01;
|
struct EnBba01;
|
||||||
|
|
||||||
typedef void (*EnBba01ActionFunc)(struct EnBba01*, GlobalContext*);
|
typedef void (*EnBba01ActionFunc)(struct EnBba01*, GlobalContext*);
|
||||||
|
|
||||||
|
#define ENBBA01_GET_PATH(thisx) (((thisx)->params & 0x7E00) >> 9)
|
||||||
|
#define ENBBA01_NO_PATH 0x3F
|
||||||
|
|
||||||
typedef struct EnBba01 {
|
typedef struct EnBba01 {
|
||||||
/* 0x0000 */ Actor actor;
|
/* 0x000 */ EnHy enHy;
|
||||||
/* 0x0144 */ EnBba01ActionFunc actionFunc;
|
/* 0x3EC */ UNK_TYPE1 unk_3EC[0x230];
|
||||||
/* 0x0148 */ char unk_148[0x4D4];
|
|
||||||
} EnBba01; // size = 0x61C
|
} EnBba01; // size = 0x61C
|
||||||
|
|
||||||
extern const ActorInit En_Bba_01_InitVars;
|
extern const ActorInit En_Bba_01_InitVars;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include "z_en_cne_01.h"
|
#include "z_en_cne_01.h"
|
||||||
#include "objects/object_cne/object_cne.h"
|
#include "objects/object_cne/object_cne.h"
|
||||||
|
|
||||||
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_8 | ACTOR_FLAG_1)
|
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10)
|
||||||
|
|
||||||
#define THIS ((EnCne01*)thisx)
|
#define THIS ((EnCne01*)thisx)
|
||||||
|
|
||||||
|
@ -20,8 +20,6 @@ void EnCne01_Walk(EnHy* this, GlobalContext* globalCtx);
|
||||||
void EnCne01_FaceForward(EnHy* this, GlobalContext* globalCtx);
|
void EnCne01_FaceForward(EnHy* this, GlobalContext* globalCtx);
|
||||||
void EnCne01_Talk(EnHy* this, GlobalContext* globalCtx);
|
void EnCne01_Talk(EnHy* this, GlobalContext* globalCtx);
|
||||||
|
|
||||||
typedef enum { CNE01_DMG_EFF_NONE } EnCne01DamageEffect;
|
|
||||||
|
|
||||||
const ActorInit En_Cne_01_InitVars = {
|
const ActorInit En_Cne_01_InitVars = {
|
||||||
ACTOR_EN_CNE_01,
|
ACTOR_EN_CNE_01,
|
||||||
ACTORCAT_NPC,
|
ACTORCAT_NPC,
|
||||||
|
@ -57,41 +55,41 @@ static ColliderCylinderInit sCylinderInit = {
|
||||||
static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE };
|
static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE };
|
||||||
|
|
||||||
static DamageTable sDamageTable = {
|
static DamageTable sDamageTable = {
|
||||||
/* Deku Nut */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Deku Nut */ DMG_ENTRY(0, 0),
|
||||||
/* Deku Stick */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Deku Stick */ DMG_ENTRY(0, 0),
|
||||||
/* Horse trample */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Horse trample */ DMG_ENTRY(0, 0),
|
||||||
/* Explosives */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Explosives */ DMG_ENTRY(0, 0),
|
||||||
/* Zora boomerang */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Zora boomerang */ DMG_ENTRY(0, 0),
|
||||||
/* Normal arrow */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Normal arrow */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x06 */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* UNK_DMG_0x06 */ DMG_ENTRY(0, 0),
|
||||||
/* Hookshot */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Hookshot */ DMG_ENTRY(0, 0),
|
||||||
/* Goron punch */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Goron punch */ DMG_ENTRY(0, 0),
|
||||||
/* Sword */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Sword */ DMG_ENTRY(0, 0),
|
||||||
/* Goron pound */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Goron pound */ DMG_ENTRY(0, 0),
|
||||||
/* Fire arrow */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Fire arrow */ DMG_ENTRY(0, 0),
|
||||||
/* Ice arrow */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Ice arrow */ DMG_ENTRY(0, 0),
|
||||||
/* Light arrow */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Light arrow */ DMG_ENTRY(0, 0),
|
||||||
/* Goron spikes */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Goron spikes */ DMG_ENTRY(0, 0),
|
||||||
/* Deku spin */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Deku spin */ DMG_ENTRY(0, 0),
|
||||||
/* Deku bubble */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Deku bubble */ DMG_ENTRY(0, 0),
|
||||||
/* Deku launch */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Deku launch */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x12 */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* UNK_DMG_0x12 */ DMG_ENTRY(0, 0),
|
||||||
/* Zora barrier */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Zora barrier */ DMG_ENTRY(0, 0),
|
||||||
/* Normal shield */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Normal shield */ DMG_ENTRY(0, 0),
|
||||||
/* Light ray */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Light ray */ DMG_ENTRY(0, 0),
|
||||||
/* Thrown object */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Thrown object */ DMG_ENTRY(0, 0),
|
||||||
/* Zora punch */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Zora punch */ DMG_ENTRY(0, 0),
|
||||||
/* Spin attack */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Spin attack */ DMG_ENTRY(0, 0),
|
||||||
/* Sword beam */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Sword beam */ DMG_ENTRY(0, 0),
|
||||||
/* Normal Roll */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Normal Roll */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x1B */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* UNK_DMG_0x1B */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x1C */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* UNK_DMG_0x1C */ DMG_ENTRY(0, 0),
|
||||||
/* Unblockable */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Unblockable */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x1E */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* UNK_DMG_0x1E */ DMG_ENTRY(0, 0),
|
||||||
/* Powder Keg */ DMG_ENTRY(0, CNE01_DMG_EFF_NONE),
|
/* Powder Keg */ DMG_ENTRY(0, 0),
|
||||||
};
|
};
|
||||||
|
|
||||||
static u16 D_809CBF58[] = { 4000, 4, 1, 3, 6000, 4, 1, 6, 4000, 4, 1, 3, 6000, 4, 1, 6 };
|
u16 D_809CBF58[] = { 4000, 4, 1, 3, 6000, 4, 1, 6, 4000, 4, 1, 3, 6000, 4, 1, 6 };
|
||||||
|
|
||||||
void EnCne01_UpdateModel(EnCne01* this, GlobalContext* globalCtx) {
|
void EnCne01_UpdateModel(EnCne01* this, GlobalContext* globalCtx) {
|
||||||
Player* player = GET_PLAYER(globalCtx);
|
Player* player = GET_PLAYER(globalCtx);
|
||||||
|
@ -122,7 +120,7 @@ s32 EnCne01_TestIsTalking(EnCne01* this, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
if (Actor_ProcessTalkRequest(&this->enHy.actor, &globalCtx->state)) {
|
if (Actor_ProcessTalkRequest(&this->enHy.actor, &globalCtx->state)) {
|
||||||
isTalking = true;
|
isTalking = true;
|
||||||
this->enHy.textId = 0x10B9;
|
this->enHy.textId = 0x10B9; // Invalid textId, produces empty textbox
|
||||||
this->enHy.tmpFocusTarget = this->enHy.focusTarget;
|
this->enHy.tmpFocusTarget = this->enHy.focusTarget;
|
||||||
this->enHy.tmpHeadRot = this->enHy.headRot;
|
this->enHy.tmpHeadRot = this->enHy.headRot;
|
||||||
this->enHy.tmpTorsoRot = this->enHy.torsoRot;
|
this->enHy.tmpTorsoRot = this->enHy.torsoRot;
|
||||||
|
@ -169,13 +167,13 @@ void EnCne01_FaceForward(EnHy* this, GlobalContext* globalCtx) {
|
||||||
|
|
||||||
void EnCne01_Talk(EnHy* this, GlobalContext* globalCtx) {
|
void EnCne01_Talk(EnHy* this, GlobalContext* globalCtx) {
|
||||||
s16 yaw;
|
s16 yaw;
|
||||||
u8 talkstate;
|
u8 talkState;
|
||||||
|
|
||||||
Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 4, 0xFA0, 1);
|
Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 4, 0xFA0, 1);
|
||||||
talkstate = Message_GetState(&globalCtx->msgCtx);
|
talkState = Message_GetState(&globalCtx->msgCtx);
|
||||||
this->inMsgState3 = (talkstate == 3) ? true : false;
|
this->inMsgState3 = (talkState == 3) ? true : false;
|
||||||
|
|
||||||
switch (talkstate) {
|
switch (talkState) {
|
||||||
case 0:
|
case 0:
|
||||||
yaw = ABS_ALT(this->actor.shape.rot.y - this->actor.yawTowardsPlayer);
|
yaw = ABS_ALT(this->actor.shape.rot.y - this->actor.yawTowardsPlayer);
|
||||||
if (yaw < 0x64) {
|
if (yaw < 0x64) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef Z_EN_CNE_01_H
|
#ifndef Z_EN_CNE_01_H
|
||||||
#define Z_EN_CNE_01_H
|
#define Z_EN_CNE_01_H
|
||||||
|
|
||||||
#include "z_en_hy.h"
|
#include "z_en_hy_code.h"
|
||||||
|
|
||||||
struct EnCne01;
|
struct EnCne01;
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,6 @@ void EnZo_FollowPath(EnZo* this, GlobalContext* globalCtx);
|
||||||
void EnZo_TreadWater(EnZo* this, GlobalContext* globalCtx);
|
void EnZo_TreadWater(EnZo* this, GlobalContext* globalCtx);
|
||||||
void EnZo_DoNothing(EnZo* this, GlobalContext* globalCtx);
|
void EnZo_DoNothing(EnZo* this, GlobalContext* globalCtx);
|
||||||
|
|
||||||
typedef enum { ZO_DMG_EFF_NONE } EnZoDamageEffect;
|
|
||||||
|
|
||||||
const ActorInit En_Zo_InitVars = {
|
const ActorInit En_Zo_InitVars = {
|
||||||
ACTOR_EN_ZO,
|
ACTOR_EN_ZO,
|
||||||
ACTORCAT_NPC,
|
ACTORCAT_NPC,
|
||||||
|
@ -57,38 +55,38 @@ static ColliderCylinderInit sCylinderInit = {
|
||||||
static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE };
|
static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE };
|
||||||
|
|
||||||
static DamageTable sDamageTable = {
|
static DamageTable sDamageTable = {
|
||||||
/* Deku Nut */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Deku Nut */ DMG_ENTRY(0, 0),
|
||||||
/* Deku Stick */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Deku Stick */ DMG_ENTRY(0, 0),
|
||||||
/* Horse trample */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Horse trample */ DMG_ENTRY(0, 0),
|
||||||
/* Explosives */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Explosives */ DMG_ENTRY(0, 0),
|
||||||
/* Zora boomerang */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Zora boomerang */ DMG_ENTRY(0, 0),
|
||||||
/* Normal arrow */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Normal arrow */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x06 */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* UNK_DMG_0x06 */ DMG_ENTRY(0, 0),
|
||||||
/* Hookshot */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Hookshot */ DMG_ENTRY(0, 0),
|
||||||
/* Goron punch */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Goron punch */ DMG_ENTRY(0, 0),
|
||||||
/* Sword */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Sword */ DMG_ENTRY(0, 0),
|
||||||
/* Goron pound */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Goron pound */ DMG_ENTRY(0, 0),
|
||||||
/* Fire arrow */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Fire arrow */ DMG_ENTRY(0, 0),
|
||||||
/* Ice arrow */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Ice arrow */ DMG_ENTRY(0, 0),
|
||||||
/* Light arrow */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Light arrow */ DMG_ENTRY(0, 0),
|
||||||
/* Goron spikes */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Goron spikes */ DMG_ENTRY(0, 0),
|
||||||
/* Deku spin */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Deku spin */ DMG_ENTRY(0, 0),
|
||||||
/* Deku bubble */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Deku bubble */ DMG_ENTRY(0, 0),
|
||||||
/* Deku launch */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Deku launch */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x12 */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* UNK_DMG_0x12 */ DMG_ENTRY(0, 0),
|
||||||
/* Zora barrier */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Zora barrier */ DMG_ENTRY(0, 0),
|
||||||
/* Normal shield */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Normal shield */ DMG_ENTRY(0, 0),
|
||||||
/* Light ray */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Light ray */ DMG_ENTRY(0, 0),
|
||||||
/* Thrown object */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Thrown object */ DMG_ENTRY(0, 0),
|
||||||
/* Zora punch */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Zora punch */ DMG_ENTRY(0, 0),
|
||||||
/* Spin attack */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Spin attack */ DMG_ENTRY(0, 0),
|
||||||
/* Sword beam */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Sword beam */ DMG_ENTRY(0, 0),
|
||||||
/* Normal Roll */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Normal Roll */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x1B */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* UNK_DMG_0x1B */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x1C */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* UNK_DMG_0x1C */ DMG_ENTRY(0, 0),
|
||||||
/* Unblockable */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Unblockable */ DMG_ENTRY(0, 0),
|
||||||
/* UNK_DMG_0x1E */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* UNK_DMG_0x1E */ DMG_ENTRY(0, 0),
|
||||||
/* Powder Keg */ DMG_ENTRY(0, ZO_DMG_EFF_NONE),
|
/* Powder Keg */ DMG_ENTRY(0, 0),
|
||||||
};
|
};
|
||||||
|
|
||||||
static AnimationInfoS sAnimations[] = {
|
static AnimationInfoS sAnimations[] = {
|
||||||
|
|
|
@ -9155,19 +9155,19 @@
|
||||||
0x809CBBC8:("EnCne01_PostLimbDraw",),
|
0x809CBBC8:("EnCne01_PostLimbDraw",),
|
||||||
0x809CBCA0:("EnCne01_TransformLimbDraw",),
|
0x809CBCA0:("EnCne01_TransformLimbDraw",),
|
||||||
0x809CBCB4:("EnCne01_Draw",),
|
0x809CBCB4:("EnCne01_Draw",),
|
||||||
0x809CC060:("func_809CC060",),
|
0x809CC060:("EnBba01_UpdateModel",),
|
||||||
0x809CC1D4:("func_809CC1D4",),
|
0x809CC1D4:("EnBba01_TestIsTalking",),
|
||||||
0x809CC270:("func_809CC270",),
|
0x809CC270:("func_809CC270",),
|
||||||
0x809CC2F0:("func_809CC2F0",),
|
0x809CC2F0:("EnBba01_FinishInit",),
|
||||||
0x809CC370:("func_809CC370",),
|
0x809CC370:("EnBba01_Walk",),
|
||||||
0x809CC3A8:("func_809CC3A8",),
|
0x809CC3A8:("EnBba01_FaceFoward",),
|
||||||
0x809CC3CC:("func_809CC3CC",),
|
0x809CC3CC:("EnBba01_Talk",),
|
||||||
0x809CC4FC:("EnBba01_Init",),
|
0x809CC4FC:("EnBba01_Init",),
|
||||||
0x809CC63C:("EnBba01_Destroy",),
|
0x809CC63C:("EnBba01_Destroy",),
|
||||||
0x809CC668:("EnBba01_Update",),
|
0x809CC668:("EnBba01_Update",),
|
||||||
0x809CC6F0:("func_809CC6F0",),
|
0x809CC6F0:("EnBba01_OverrideLimbDraw",),
|
||||||
0x809CC984:("func_809CC984",),
|
0x809CC984:("EnBba01_PostLimbDraw",),
|
||||||
0x809CCA5C:("func_809CCA5C",),
|
0x809CCA5C:("EnBba01_TransformLimbDraw",),
|
||||||
0x809CCA70:("EnBba01_Draw",),
|
0x809CCA70:("EnBba01_Draw",),
|
||||||
0x809CCDE0:("func_809CCDE0",),
|
0x809CCDE0:("func_809CCDE0",),
|
||||||
0x809CCE98:("func_809CCE98",),
|
0x809CCE98:("func_809CCE98",),
|
||||||
|
@ -15194,7 +15194,7 @@
|
||||||
0x80BA9F50:("EnBaba_Update",),
|
0x80BA9F50:("EnBaba_Update",),
|
||||||
0x80BA9FB0:("EnBaba_OverrideLimbDraw",),
|
0x80BA9FB0:("EnBaba_OverrideLimbDraw",),
|
||||||
0x80BAA198:("EnBaba_PostLimbDraw",),
|
0x80BAA198:("EnBaba_PostLimbDraw",),
|
||||||
0x80BAA20C:("EnBaba_TransformDraw",),
|
0x80BAA20C:("EnBaba_TransformLimbDraw",),
|
||||||
0x80BAA220:("EnBaba_Draw",),
|
0x80BAA220:("EnBaba_Draw",),
|
||||||
0x80BAA6D0:("EnSuttari_UpdateCollider",),
|
0x80BAA6D0:("EnSuttari_UpdateCollider",),
|
||||||
0x80BAA848:("EnSuttari_GetActorById",),
|
0x80BAA848:("EnSuttari_GetActorById",),
|
||||||
|
|
|
@ -1139,10 +1139,6 @@ D_06000184 = 0x06000184;
|
||||||
D_06000444 = 0x06000444;
|
D_06000444 = 0x06000444;
|
||||||
D_06001A30 = 0x06001A30;
|
D_06001A30 = 0x06001A30;
|
||||||
|
|
||||||
// ovl_En_Bba_01
|
|
||||||
|
|
||||||
D_06005EF0 = 0x06005EF0;
|
|
||||||
|
|
||||||
// ovl_En_Bbfall
|
// ovl_En_Bbfall
|
||||||
|
|
||||||
D_06000184 = 0x06000184;
|
D_06000184 = 0x06000184;
|
||||||
|
|
Loading…
Reference in New Issue