mirror of https://github.com/zeldaret/mm.git
EnYb OK (Kamaro, the dancing ghost) (#562)
* EnYb: start * EnYb: ah I broke it * EnYb: well at least the draw function matched... * EnYb: back to semi-matching * EnYb: Back to OK, workable again * EnYb: init matches now, ugly as it is for dma padding * EnYb: probably not progress * EnYb: fixes to master merge, back to OK * EnYb: custom shadow function matches * EnYb: more docs, this last function sucks * EnYb: OK thanks to Anon and myxrules * EnYb: docs * EnYb: more docs * EnYb: formatter pass * EnYb: removed unused symbols * Requested changes part 1 * EnYb: Minor changes * EnYb: forgot the spec * EnYb: some display lists documented based on limbs, but two remain because their limbs dont highlight in z64Utils * EnYb:one wrong entry * EnYb: maybe better object documentation * EnYb: fix warnings * EnYb: flag docs * EnYb: changed function * EnYb: more documentation * EnYb: flags enum at top * Update src/overlays/actors/ovl_En_Yb/z_en_yb.c Co-authored-by: Anghelo Carvajal <angheloalf95@gmail.com> * Update src/overlays/actors/ovl_En_Yb/z_en_yb.c Co-authored-by: Anghelo Carvajal <angheloalf95@gmail.com> * EnYb: PR fixes * EnYb: formater is picky * EnYb: jenkins bait * EnYb: correct array access * EnYb: formater pass * Apply suggestions from code review Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * EnYb: fixes * EnYb: more requested changes, formater pass * EnYb: renamed padding * EnYb: object xml name updates * EnYb: merge fix * EnYb: limb enum and small changes * EnYb: scale float fraction found * EnYb: better object limb naming * EnYb: formater pls * EnYb: flipped actor flags to match OOT * Apply suggestions from code review Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com> * EnYb: more requested changes * EnYb: more animMode enum found * EnYb: doc player playing ocarina Co-authored-by: isghj8 <isghj8@gmail.com> Co-authored-by: Anghelo Carvajal <angheloalf95@gmail.com> Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> Co-authored-by: EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com>
This commit is contained in:
parent
a9a97e217c
commit
26d1982f19
|
@ -1,57 +1,61 @@
|
|||
<Root>
|
||||
<File Name="object_yb" Segment="6">
|
||||
<!-- animation wont play in z64utils, attempts to play in game are crash -->
|
||||
<!-- actor uses link animation so this might be reading incorrectly -->
|
||||
<Animation Name="object_yb_Anim_000200" Offset="0x200" />
|
||||
<!-- since these blobs are right after the animation, and that animation doesnt work... assume this is part of why -->
|
||||
<!-- <Blob Name="object_yb_Blob_002080" Size="0x30" Offset="0x2080" /> -->
|
||||
<!-- <Blob Name="object_yb_Blob_002D50" Size="0x30" Offset="0x2D50" /> -->
|
||||
<DList Name="object_yb_DL_003400" Offset="0x3400" />
|
||||
<DList Name="object_yb_DL_003610" Offset="0x3610" />
|
||||
<DList Name="object_yb_DL_0037B0" Offset="0x37B0" />
|
||||
<DList Name="object_yb_DL_003900" Offset="0x3900" />
|
||||
<DList Name="object_yb_DL_003BC8" Offset="0x3BC8" />
|
||||
<DList Name="object_yb_DL_003D68" Offset="0x3D68" />
|
||||
<DList Name="object_yb_DL_003EB8" Offset="0x3EB8" />
|
||||
<DList Name="object_yb_DL_004108" Offset="0x4108" />
|
||||
<DList Name="object_yb_DL_004110" Offset="0x4110" />
|
||||
<DList Name="object_yb_DL_004310" Offset="0x4310" />
|
||||
<DList Name="object_yb_DL_0047F8" Offset="0x47F8" />
|
||||
<DList Name="object_yb_DL_004970" Offset="0x4970" />
|
||||
<DList Name="object_yb_DL_004978" Offset="0x4978" />
|
||||
<DList Name="object_yb_DL_004AA0" Offset="0x4AA0" />
|
||||
<DList Name="object_yb_DL_004BC0" Offset="0x4BC0" />
|
||||
<DList Name="object_yb_DL_004D98" Offset="0x4D98" />
|
||||
<DList Name="object_yb_DL_004EC0" Offset="0x4EC0" />
|
||||
<DList Name="object_yb_DL_004FE0" Offset="0x4FE0" />
|
||||
<Texture Name="object_yb_TLUT_0051B8" OutName="tlut_0051B8" Format="rgba16" Width="16" Height="16" Offset="0x51B8" />
|
||||
<Texture Name="object_yb_Tex_0053B8" OutName="tex_0053B8" Format="ci8" Width="8" Height="8" Offset="0x53B8" />
|
||||
<Texture Name="object_yb_Tex_0053F8" OutName="tex_0053F8" Format="ci8" Width="8" Height="16" Offset="0x53F8" />
|
||||
<Texture Name="object_yb_Tex_005478" OutName="tex_005478" Format="ci8" Width="16" Height="16" Offset="0x5478" />
|
||||
<Texture Name="object_yb_Tex_005578" OutName="tex_005578" Format="ci8" Width="16" Height="16" Offset="0x5578" />
|
||||
<Texture Name="object_yb_Tex_005678" OutName="tex_005678" Format="ci8" Width="16" Height="16" Offset="0x5678" />
|
||||
<Texture Name="object_yb_Tex_005778" OutName="tex_005778" Format="ci8" Width="8" Height="16" Offset="0x5778" />
|
||||
<Texture Name="object_yb_Tex_0057F8" OutName="tex_0057F8" Format="ci8" Width="16" Height="16" Offset="0x57F8" />
|
||||
<Texture Name="object_yb_Tex_0058F8" OutName="tex_0058F8" Format="ci8" Width="32" Height="32" Offset="0x58F8" />
|
||||
<Texture Name="object_yb_Tex_005CF8" OutName="tex_005CF8" Format="i8" Width="16" Height="16" Offset="0x5CF8" />
|
||||
<Limb Name="object_yb_Standardlimb_005DF8" Type="Standard" Offset="0x5DF8" />
|
||||
<Limb Name="object_yb_Standardlimb_005E04" Type="Standard" Offset="0x5E04" />
|
||||
<Limb Name="object_yb_Standardlimb_005E10" Type="Standard" Offset="0x5E10" />
|
||||
<Limb Name="object_yb_Standardlimb_005E1C" Type="Standard" Offset="0x5E1C" />
|
||||
<Limb Name="object_yb_Standardlimb_005E28" Type="Standard" Offset="0x5E28" />
|
||||
<Limb Name="object_yb_Standardlimb_005E34" Type="Standard" Offset="0x5E34" />
|
||||
<Limb Name="object_yb_Standardlimb_005E40" Type="Standard" Offset="0x5E40" />
|
||||
<Limb Name="object_yb_Standardlimb_005E4C" Type="Standard" Offset="0x5E4C" />
|
||||
<Limb Name="object_yb_Standardlimb_005E58" Type="Standard" Offset="0x5E58" />
|
||||
<Limb Name="object_yb_Standardlimb_005E64" Type="Standard" Offset="0x5E64" />
|
||||
<Limb Name="object_yb_Standardlimb_005E70" Type="Standard" Offset="0x5E70" />
|
||||
<Limb Name="object_yb_Standardlimb_005E7C" Type="Standard" Offset="0x5E7C" />
|
||||
<Limb Name="object_yb_Standardlimb_005E88" Type="Standard" Offset="0x5E88" />
|
||||
<Limb Name="object_yb_Standardlimb_005E94" Type="Standard" Offset="0x5E94" />
|
||||
<Limb Name="object_yb_Standardlimb_005EA0" Type="Standard" Offset="0x5EA0" />
|
||||
<Limb Name="object_yb_Standardlimb_005EAC" Type="Standard" Offset="0x5EAC" />
|
||||
<Limb Name="object_yb_Standardlimb_005EB8" Type="Standard" Offset="0x5EB8" />
|
||||
<Limb Name="object_yb_Standardlimb_005EC4" Type="Standard" Offset="0x5EC4" />
|
||||
<Limb Name="object_yb_Standardlimb_005ED0" Type="Standard" Offset="0x5ED0" />
|
||||
<Limb Name="object_yb_Standardlimb_005EDC" Type="Standard" Offset="0x5EDC" />
|
||||
<Limb Name="object_yb_Standardlimb_005EE8" Type="Standard" Offset="0x5EE8" />
|
||||
<Skeleton Name="object_yb_Skel_005F48" Type="Flex" LimbType="Standard" Offset="0x5F48" />
|
||||
<DList Name="gYbPantsAndBellyButtonDL" Offset="0x3400" />
|
||||
<DList Name="gYbRightThighDL" Offset="0x3610" />
|
||||
<DList Name="gYbRightCalfDL" Offset="0x37B0" />
|
||||
<DList Name="gYbRightFoodDL" Offset="0x3900" />
|
||||
<DList Name="gYbLeftThighDL" Offset="0x3BC8" />
|
||||
<DList Name="gYbLeftCalfDL" Offset="0x3D68" />
|
||||
<DList Name="gYbLeftFootDL" Offset="0x3EB8" />
|
||||
<DList Name="gYbEndDisplayList4108DL" Offset="0x4108" />
|
||||
<DList Name="gYbUpperTorsoDL" Offset="0x4110" />
|
||||
<DList Name="gYbHeadDL" Offset="0x4310" />
|
||||
<DList Name="gYbPonyTailDL" Offset="0x47F8" />
|
||||
<DList Name="gYbEndDisplayList4970DL" Offset="0x4970" />
|
||||
<DList Name="gYbRightUpperArmDL" Offset="0x4978" />
|
||||
<DList Name="gYbRightForArmDL" Offset="0x4AA0" />
|
||||
<DList Name="gYbRightHandDL" Offset="0x4BC0" />
|
||||
<DList Name="gYbLeftUpperArmDL" Offset="0x4D98" />
|
||||
<DList Name="gYbLeftForArmDL" Offset="0x4EC0" />
|
||||
<DList Name="gYbLeftHandDL" Offset="0x4FE0" />
|
||||
<Texture Name="gYbTLUT" OutName="yb_tlut" Format="rgba16" Width="16" Height="16" Offset="0x51B8" />
|
||||
<Texture Name="gYbForeheadBlotchTex" OutName="yb_forhead_blotch" Format="ci8" Width="8" Height="8" Offset="0x53B8" />
|
||||
<Texture Name="gYbPonytailTex" OutName="yb_ponytail" Format="ci8" Width="8" Height="16" Offset="0x53F8" />
|
||||
<Texture Name="gYbFingersTex" OutName="yb_fingers" Format="ci8" Width="16" Height="16" Offset="0x5478" />
|
||||
<Texture Name="gYbToesTex" OutName="yb_toes" Format="ci8" Width="16" Height="16" Offset="0x5578" />
|
||||
<Texture Name="gYbHairlineTex" OutName="yb_hairline" Format="ci8" Width="16" Height="16" Offset="0x5678" />
|
||||
<Texture Name="gYbBellybuttonTex" OutName="yb_bellybutton" Format="ci8" Width="8" Height="16" Offset="0x5778" />
|
||||
<Texture Name="gYbNoseTex" OutName="yb_nose" Format="ci8" Width="16" Height="16" Offset="0x57F8" />
|
||||
<Texture Name="gYbEyeTex" OutName="yb_eye" Format="ci8" Width="32" Height="32" Offset="0x58F8" />
|
||||
<Texture Name="gYbPantsTex" OutName="yb_pants" Format="i8" Width="16" Height="16" Offset="0x5CF8" />
|
||||
<!-- some limbs wont highlight in z64utils, some guesswork here -->
|
||||
<Limb Name="gYbMainRootLimb" Type="Standard" EnumName="YB_LIMB_MAIN_ROOT" Offset="0x5DF8" />
|
||||
<Limb Name="gYbPantsLimb" Type="Standard" EnumName="YB_LIMB_PANTS" Offset="0x5E04" />
|
||||
<Limb Name="gYbLegsRootLimb" Type="Standard" EnumName="YB_LIMB_LEGS_ROOT" Offset="0x5E10" />
|
||||
<Limb Name="gYbRightThighLimb" Type="Standard" EnumName="YB_LIMB_RIGHT_THIGH" Offset="0x5E1C" />
|
||||
<Limb Name="gYbRightCalfLimb" Type="Standard" EnumName="YB_LIMB_RIGHT_CALF" Offset="0x5E28" />
|
||||
<Limb Name="gYbRightFootLimb" Type="Standard" EnumName="YB_LIMB_RIGHT_FOOT" Offset="0x5E34" />
|
||||
<Limb Name="gYbLeftThighLimb" Type="Standard" EnumName="YB_LIMB_LEFT_THIGH" Offset="0x5E40" />
|
||||
<Limb Name="gYbLeftCalfLimb" Type="Standard" EnumName="YB_LIMB_LEFT_CALF" Offset="0x5E4C" />
|
||||
<Limb Name="gYbLeftFootLimb" Type="Standard" EnumName="YB_LIMB_LEFT_FOOT" Offset="0x5E58" />
|
||||
<Limb Name="gYbChestRootLimb" Type="Standard" EnumName="YB_LIMB_CHEST_ROOT" Offset="0x5E64" />
|
||||
<Limb Name="gYbHeadLimb" Type="Standard" EnumName="YB_LIMB_HEAD" Offset="0x5E70" />
|
||||
<Limb Name="gYbPonyTailLimb" Type="Standard" EnumName="YB_LIMB_PONYTAIL" Offset="0x5E7C" />
|
||||
<Limb Name="gYbEmpty5E88Limb" Type="Standard" EnumName="YB_LIMB_EMPTY_5E88" Offset="0x5E88" />
|
||||
<Limb Name="gYbLeftUpperArmLimb" Type="Standard" EnumName="YB_LIMB_LEFT_UPPER_ARM" Offset="0x5E94" />
|
||||
<Limb Name="gYbLeftForArmLimb" Type="Standard" EnumName="YB_LIMB_LEFT_FORARM" Offset="0x5EA0" />
|
||||
<Limb Name="gYbLeftHandLimb" Type="Standard" EnumName="YB_LIMB_LEFT_HAND" Offset="0x5EAC" />
|
||||
<Limb Name="gYbRightUpperArmLimb" Type="Standard" EnumName="YB_LIMB_RIGHT_UPPER_ARM" Offset="0x5EB8" />
|
||||
<Limb Name="gYbRightForArmLimb" Type="Standard" EnumName="YB_LIMB_RIGHT_FORARM" Offset="0x5EC4" />
|
||||
<Limb Name="gYbRightHandLimb" Type="Standard" EnumName="YB_LIMB_RIGHT_HAND" Offset="0x5ED0" />
|
||||
<Limb Name="gYbEmpty5EDCLimb" Type="Standard" EnumName="YB_LIMB_EMPTY_5EDC" Offset="0x5EDC" />
|
||||
<Limb Name="gYbUpperTorsoLimb" Type="Standard" EnumName="YB_LIMB_TORSO" Offset="0x5EE8" />
|
||||
<Skeleton Name="gYbSkeleton" Type="Flex" LimbType="Standard" LimbNone="YB_LIMB_NONE" LimbMax="YB_LIMB_MAX" EnumName="ObjectYBLimbs" Offset="0x5F48" />
|
||||
</File>
|
||||
</Root>
|
||||
|
|
3
spec
3
spec
|
@ -5042,8 +5042,7 @@ beginseg
|
|||
name "ovl_En_Yb"
|
||||
compress
|
||||
include "build/src/overlays/actors/ovl_En_Yb/z_en_yb.o"
|
||||
include "build/data/ovl_En_Yb/ovl_En_Yb.data.o"
|
||||
include "build/data/ovl_En_Yb/ovl_En_Yb.reloc.o"
|
||||
include "build/src/overlays/actors/ovl_En_Yb/ovl_En_Yb_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
|
|
@ -5,8 +5,9 @@
|
|||
*/
|
||||
|
||||
#include "z_en_yb.h"
|
||||
#include "objects/gameplay_keep/gameplay_keep.h"
|
||||
|
||||
#define FLAGS 0x02000019
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10 | ACTOR_FLAG_2000000)
|
||||
|
||||
#define THIS ((EnYb*)thisx)
|
||||
|
||||
|
@ -15,16 +16,22 @@ void EnYb_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
|||
void EnYb_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
void EnYb_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
|
||||
void func_80BFA730(EnYb* this, GlobalContext* globalCtx);
|
||||
void func_80BFA868(EnYb* this, GlobalContext* globalCtx);
|
||||
void func_80BFA91C(EnYb* this, GlobalContext* globalCtx);
|
||||
void func_80BFA9D4(EnYb* this, GlobalContext* globalCtx);
|
||||
void func_80BFAB4C(EnYb* this, GlobalContext* globalCtx);
|
||||
void func_80BFABF0(EnYb* this, GlobalContext* globalCtx);
|
||||
void func_80BFAC88(EnYb* this, GlobalContext* globalCtx);
|
||||
void func_80BFAE80(EnYb* this, GlobalContext* globalCtx);
|
||||
void EnYb_Idle(EnYb* this, GlobalContext* globalCtx);
|
||||
void EnYb_TeachingDanceFinish(EnYb* this, GlobalContext* globalCtx);
|
||||
void EnYb_SetupLeaving(EnYb* this, GlobalContext* globalCtx);
|
||||
|
||||
void EnYb_UpdateAnimation(EnYb* this, GlobalContext* globalCtx);
|
||||
void EnYb_FinishTeachingCutscene(EnYb* this);
|
||||
void EnYb_Disappear(EnYb* this, GlobalContext* globalCtx);
|
||||
void EnYb_ReceiveMask(EnYb* this, GlobalContext* globalCtx);
|
||||
void EnYb_Talk(EnYb* this, GlobalContext* globalCtx);
|
||||
void EnYb_TeachingDance(EnYb* this, GlobalContext* globalCtx);
|
||||
void EnYb_WaitForMidnight(EnYb* this, GlobalContext* globalCtx);
|
||||
|
||||
void EnYb_ActorShadowFunc(Actor* thisx, Lights* mapper, GlobalContext* globalCtx);
|
||||
void EnYb_SetAnimation(GlobalContext*, EnYb*, s16, u8, f32);
|
||||
s32 EnYb_CanTalk(EnYb* this, GlobalContext* globalCtx);
|
||||
|
||||
#if 0
|
||||
const ActorInit En_Yb_InitVars = {
|
||||
ACTOR_EN_YB,
|
||||
ACTORCAT_NPC,
|
||||
|
@ -37,59 +44,439 @@ const ActorInit En_Yb_InitVars = {
|
|||
(ActorFunc)EnYb_Draw,
|
||||
};
|
||||
|
||||
// static ColliderCylinderInit sCylinderInit = {
|
||||
static ColliderCylinderInit D_80BFB2B0 = {
|
||||
{ COLTYPE_NONE, AT_NONE, AC_ON | AC_TYPE_ENEMY, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_1, COLSHAPE_CYLINDER, },
|
||||
{ ELEMTYPE_UNK0, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_ON, },
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
AT_NONE,
|
||||
AC_ON | AC_TYPE_ENEMY,
|
||||
OC1_ON | OC1_TYPE_ALL,
|
||||
OC2_TYPE_1,
|
||||
COLSHAPE_CYLINDER,
|
||||
},
|
||||
{
|
||||
ELEMTYPE_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0xF7CFFFFF, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 20, 40, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
#endif
|
||||
// crashes if I try to mod it in to look at it
|
||||
// assumption: draw uses two different skeleton functions, might be incompatible
|
||||
static AnimationHeader* gYbUnusedAnimations[] = { &object_yb_Anim_000200 };
|
||||
|
||||
extern ColliderCylinderInit D_80BFB2B0;
|
||||
static LinkAnimationHeader* gLinkAnimations[] = { &gameplay_keep_Linkanim_00DF28, &gameplay_keep_Linkanim_00CF98 };
|
||||
|
||||
extern UNK_TYPE D_06000200;
|
||||
static Vec3f D_80BFB2E8 = { 0.0f, 0.5f, 0.0f };
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/EnYb_Init.s")
|
||||
static Vec3f D_80BFB2F4 = { 500.0f, -500.0, 0.0f };
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/EnYb_Destroy.s")
|
||||
static Vec3f D_80BFB300 = { 500.0f, -500.0f, 0.0f };
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA2FC.s")
|
||||
void EnYb_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnYb* this = THIS;
|
||||
s16 tempCutscene;
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA350.s")
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, EnYb_ActorShadowFunc, 20.0f);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA444.s")
|
||||
// @Bug this alignment is because of player animations, but should be using ALIGN16
|
||||
SkelAnime_InitFlex(globalCtx, &this->skelAnime, &gYbSkeleton, &object_yb_Anim_000200,
|
||||
(uintptr_t)this->jointTable & ~0xF, (uintptr_t)this->morphTable & ~0xF, YB_LIMB_MAX);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA5CC.s")
|
||||
Animation_PlayLoop(&this->skelAnime, &object_yb_Anim_000200);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA634.s")
|
||||
Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
|
||||
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
|
||||
this->actionFunc = EnYb_Idle;
|
||||
this->currentAnimIndex = 3; // gets overwritten to 2 in EnYb_SetAnimation later
|
||||
this->actor.terminalVelocity = -9.0f;
|
||||
this->actor.gravity = -1.0f;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA67C.s")
|
||||
EnYb_SetAnimation(globalCtx, this, 2, ANIMMODE_LOOP, 0.0f);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA6E0.s")
|
||||
tempCutscene = this->actor.cutscene;
|
||||
for (i = 0; i < ARRAY_COUNT(this->cutscenes); i++) {
|
||||
this->cutscenes[i] = tempCutscene;
|
||||
if (tempCutscene != -1) {
|
||||
this->actor.cutscene = tempCutscene;
|
||||
tempCutscene = ActorCutscene_GetAdditionalCutscene(this->actor.cutscene);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA710.s")
|
||||
this->cutsceneIndex = -1;
|
||||
this->actor.cutscene = this->cutscenes[0];
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA730.s")
|
||||
// between midnight and morning start spawned
|
||||
if (gSaveContext.time < CLOCK_TIME(6, 0)) {
|
||||
this->alpha = 255;
|
||||
} else { // else (night 6pm to midnight): wait to appear
|
||||
this->alpha = 0;
|
||||
this->actionFunc = EnYb_WaitForMidnight;
|
||||
this->actor.flags &= ~ACTOR_FLAG_1;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA868.s")
|
||||
// check if already healed
|
||||
if (gSaveContext.weekEventReg[82] & 4) {
|
||||
Actor_MarkForDeath(&this->actor);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA91C.s")
|
||||
void EnYb_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnYb* this = THIS;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFA9D4.s")
|
||||
Collider_DestroyCylinder(globalCtx, &this->collider);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFAB4C.s")
|
||||
void func_80BFA2FC(GlobalContext* globalCtx) {
|
||||
if (INV_CONTENT(ITEM_MASK_KAMARO) == ITEM_MASK_KAMARO) {
|
||||
func_80151BB4(globalCtx, 0x34);
|
||||
}
|
||||
func_80151BB4(globalCtx, 0xF);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFABF0.s")
|
||||
/**
|
||||
* Custom shadow draw function of type ActorShadowFunc.
|
||||
*/
|
||||
void EnYb_ActorShadowFunc(Actor* thisx, Lights* mapper, GlobalContext* globalCtx) {
|
||||
Vec3f oldPos;
|
||||
EnYb* this = THIS;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFAC88.s")
|
||||
if (this->alpha > 0) {
|
||||
if (this->currentAnimIndex == 2) {
|
||||
f32 tempScale = (((27.0f - this->shadowPos.y) + this->actor.world.pos.y) * ((1 / 2.25f) * 0.001f)) + 0.01f;
|
||||
this->actor.scale.x = tempScale;
|
||||
}
|
||||
Math_Vec3f_Copy(&oldPos, &this->actor.world.pos);
|
||||
Math_Vec3f_Copy(&this->actor.world.pos, &this->shadowPos);
|
||||
func_800B4AEC(globalCtx, &this->actor, 50.0f);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFAE80.s")
|
||||
if (oldPos.y < this->actor.floorHeight) {
|
||||
this->actor.world.pos.y = this->actor.floorHeight;
|
||||
} else {
|
||||
this->actor.world.pos.y = oldPos.y;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/EnYb_Update.s")
|
||||
ActorShadow_DrawCircle(&this->actor, mapper, globalCtx);
|
||||
Math_Vec3f_Copy(&this->actor.world.pos, &oldPos);
|
||||
this->actor.scale.x = 0.01f;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFB074.s")
|
||||
void EnYb_SetAnimation(GlobalContext* globalCtx, EnYb* this, s16 animIndex, u8 animMode, f32 transitionRate) {
|
||||
if (animIndex >= 0 && animIndex < 3) {
|
||||
if (animIndex != this->currentAnimIndex || animMode != ANIMMODE_LOOP) {
|
||||
if (animIndex > 0) {
|
||||
if (animMode == ANIMMODE_LOOP) {
|
||||
LinkAnimation_Change(globalCtx, &this->skelAnime, gLinkAnimations[animIndex - 1], 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(gLinkAnimations[animIndex - 1]), ANIMMODE_LOOP,
|
||||
transitionRate);
|
||||
} else {
|
||||
// unused case, (only called once with animMode = ANIMMODE_LOOP)
|
||||
LinkAnimation_Change(globalCtx, &this->skelAnime, gLinkAnimations[animIndex - 1], 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(gLinkAnimations[animIndex - 1]), ANIMMODE_LOOP,
|
||||
transitionRate);
|
||||
}
|
||||
} else {
|
||||
// unused case, (only called once with animIndex = 2)
|
||||
AnimationHeader* animationPtr = gYbUnusedAnimations[animIndex];
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/func_80BFB0E0.s")
|
||||
if (1) {}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_En_Yb/EnYb_Draw.s")
|
||||
Animation_Change(&this->skelAnime, gYbUnusedAnimations[animIndex], 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(animationPtr), animMode, transitionRate);
|
||||
}
|
||||
this->currentAnimIndex = animIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 EnYb_CanTalk(EnYb* this, GlobalContext* globalCtx) {
|
||||
if (this->actor.xzDistToPlayer < 100.0f && Player_IsFacingActor(&this->actor, 0x3000, globalCtx) &&
|
||||
Actor_IsFacingPlayer(&this->actor, 0x3000)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void EnYb_UpdateAnimation(EnYb* this, GlobalContext* globalCtx) {
|
||||
if (this->currentAnimIndex <= 0) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
} else {
|
||||
LinkAnimation_Update(globalCtx, &this->skelAnime);
|
||||
}
|
||||
}
|
||||
|
||||
void EnYb_FinishTeachingCutscene(EnYb* this) {
|
||||
if (this->cutsceneIndex != -1) {
|
||||
if (ActorCutscene_GetCurrentIndex() == this->cutscenes[this->cutsceneIndex]) {
|
||||
ActorCutscene_Stop(this->cutscenes[this->cutsceneIndex]);
|
||||
}
|
||||
this->cutsceneIndex = -1;
|
||||
}
|
||||
}
|
||||
|
||||
void EnYb_ChangeCutscene(EnYb* this, s16 cutsceneId) {
|
||||
EnYb_FinishTeachingCutscene(this);
|
||||
this->cutsceneIndex = cutsceneId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets a flag that enables the Kamaro dancing proximity music at night.
|
||||
*/
|
||||
void EnYb_EnableProximityMusic(EnYb* this) {
|
||||
func_800B9084(&this->actor);
|
||||
}
|
||||
|
||||
void EnYb_Disappear(EnYb* this, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
Vec3f sp60;
|
||||
s32 i;
|
||||
|
||||
EnYb_UpdateAnimation(this, globalCtx);
|
||||
for (i = 3; i >= 0; i--) {
|
||||
sp60.x = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.x;
|
||||
sp60.z = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.z;
|
||||
sp60.y = randPlusMinusPoint5Scaled(50.0f) + (this->actor.world.pos.y + 20.0f);
|
||||
func_800B3030(globalCtx, &sp60, &D_80BFB2E8, &D_80BFB2E8, 100, 0, 2);
|
||||
}
|
||||
|
||||
SoundSource_PlaySfxAtFixedWorldPos(globalCtx, &this->actor.world.pos, 20, NA_SE_EN_EXTINCT);
|
||||
if (this->alpha > 10) {
|
||||
this->alpha -= 10;
|
||||
} else {
|
||||
Actor_MarkForDeath(&this->actor);
|
||||
}
|
||||
}
|
||||
|
||||
void EnYb_SetupLeaving(EnYb* this, GlobalContext* globalCtx) {
|
||||
EnYb_UpdateAnimation(this, globalCtx);
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
|
||||
this->actor.flags &= ~ACTOR_FLAG_10000;
|
||||
this->actionFunc = EnYb_Talk;
|
||||
// I am counting on you
|
||||
func_801518B0(globalCtx, 0x147D, &this->actor);
|
||||
func_80BFA2FC(globalCtx);
|
||||
} else {
|
||||
func_800B8500(&this->actor, globalCtx, 1000.0f, 1000.0f, -1);
|
||||
}
|
||||
EnYb_EnableProximityMusic(this);
|
||||
}
|
||||
|
||||
void EnYb_ReceiveMask(EnYb* this, GlobalContext* globalCtx) {
|
||||
EnYb_UpdateAnimation(this, globalCtx);
|
||||
// Player is parent: receiving the Kamaro mask
|
||||
if (Actor_HasParent(&this->actor, globalCtx)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnYb_SetupLeaving;
|
||||
this->actor.flags |= ACTOR_FLAG_10000;
|
||||
func_800B8500(&this->actor, globalCtx, 1000.0f, 1000.0f, -1);
|
||||
} else {
|
||||
Actor_PickUp(&this->actor, globalCtx, GI_MASK_KAMARO, 10000.0f, 100.0f);
|
||||
}
|
||||
EnYb_EnableProximityMusic(this);
|
||||
}
|
||||
|
||||
void EnYb_Talk(EnYb* this, GlobalContext* globalCtx) {
|
||||
Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 2, 0x1000, 0x200);
|
||||
this->actor.world.rot.y = this->actor.shape.rot.y;
|
||||
EnYb_UpdateAnimation(this, globalCtx);
|
||||
|
||||
if (Message_GetState(&globalCtx->msgCtx) == 5 && func_80147624(globalCtx) != 0) {
|
||||
switch (globalCtx->msgCtx.unk11F04) {
|
||||
case 0x147D: // I am counting on you
|
||||
func_801477B4(globalCtx);
|
||||
this->actionFunc = EnYb_Disappear;
|
||||
gSaveContext.weekEventReg[82] |= 0x4;
|
||||
break;
|
||||
case 0x147C: // Spread my dance across the world
|
||||
if (Player_GetMask(globalCtx) == PLAYER_MASK_KAMARO) {
|
||||
func_801477B4(globalCtx);
|
||||
this->actionFunc = EnYb_Idle;
|
||||
|
||||
} else if (INV_CONTENT(ITEM_MASK_KAMARO) == ITEM_MASK_KAMARO) {
|
||||
func_80151938(globalCtx, 0x147D); // I am counting on you
|
||||
func_80BFA2FC(globalCtx);
|
||||
|
||||
} else {
|
||||
func_801477B4(globalCtx);
|
||||
this->actionFunc = EnYb_ReceiveMask;
|
||||
EnYb_ReceiveMask(this, globalCtx);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
func_801477B4(globalCtx);
|
||||
this->actionFunc = EnYb_Idle;
|
||||
break;
|
||||
}
|
||||
}
|
||||
EnYb_EnableProximityMusic(this);
|
||||
}
|
||||
|
||||
void EnYb_TeachingDanceFinish(EnYb* this, GlobalContext* globalCtx) {
|
||||
EnYb_UpdateAnimation(this, globalCtx);
|
||||
if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
|
||||
this->actionFunc = EnYb_Talk;
|
||||
// Spread my dance across the world
|
||||
func_801518B0(globalCtx, 0x147C, &this->actor);
|
||||
this->actor.flags &= ~ACTOR_FLAG_10000;
|
||||
} else {
|
||||
func_800B8500(&this->actor, globalCtx, 1000.0f, 1000.0f, -1);
|
||||
}
|
||||
EnYb_EnableProximityMusic(this);
|
||||
}
|
||||
|
||||
// dancing countdown
|
||||
void EnYb_TeachingDance(EnYb* this, GlobalContext* globalCtx) {
|
||||
EnYb_UpdateAnimation(this, globalCtx);
|
||||
|
||||
if (this->teachingCutsceneTimer > 0) {
|
||||
this->teachingCutsceneTimer--;
|
||||
} else {
|
||||
EnYb_FinishTeachingCutscene(this);
|
||||
this->actionFunc = EnYb_TeachingDanceFinish;
|
||||
this->actor.flags |= ACTOR_FLAG_10000;
|
||||
func_800B8500(&this->actor, globalCtx, 1000.0f, 1000.0f, -1);
|
||||
}
|
||||
EnYb_EnableProximityMusic(this);
|
||||
}
|
||||
|
||||
void EnYb_Idle(EnYb* this, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
Player* player = GET_PLAYER(globalCtx);
|
||||
|
||||
EnYb_UpdateAnimation(this, globalCtx);
|
||||
if (this->actor.xzDistToPlayer < 180.0f && fabsf(this->actor.playerHeightRel) < 50.0f &&
|
||||
globalCtx->msgCtx.ocarinaMode == 3 && globalCtx->msgCtx.unk1202E == 7 &&
|
||||
gSaveContext.playerForm == PLAYER_FORM_HUMAN) {
|
||||
this->actionFunc = EnYb_TeachingDance;
|
||||
this->teachingCutsceneTimer = 200;
|
||||
EnYb_ChangeCutscene(this, 0);
|
||||
} else if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) {
|
||||
func_80BFA2FC(globalCtx);
|
||||
this->actionFunc = EnYb_Talk;
|
||||
if (Player_GetMask(globalCtx) == PLAYER_MASK_KAMARO) {
|
||||
// I have taught you, go use it
|
||||
func_801518B0(globalCtx, 0x147C, &this->actor);
|
||||
} else {
|
||||
// regular talk to him first dialogue
|
||||
func_801518B0(globalCtx, 0x147B, &this->actor);
|
||||
}
|
||||
} else if (EnYb_CanTalk(this, globalCtx)) {
|
||||
func_800B8614(&this->actor, globalCtx, 120.0f);
|
||||
}
|
||||
|
||||
if (this->playerOcarinaOut & 1) {
|
||||
if (!(player->stateFlags2 & 0x8000000)) {
|
||||
this->playerOcarinaOut &= ~1;
|
||||
}
|
||||
} else if ((player->stateFlags2 & 0x8000000) && this->actor.xzDistToPlayer < 180.0f &&
|
||||
fabsf(this->actor.playerHeightRel) < 50.0f) {
|
||||
this->playerOcarinaOut |= 1;
|
||||
Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_TRE_BOX_APPEAR);
|
||||
}
|
||||
|
||||
EnYb_EnableProximityMusic(this);
|
||||
}
|
||||
|
||||
void EnYb_WaitForMidnight(EnYb* this, GlobalContext* globalCtx) {
|
||||
if (gSaveContext.time < CLOCK_TIME(6, 0)) {
|
||||
EnYb_UpdateAnimation(this, globalCtx);
|
||||
this->alpha += 5;
|
||||
if (this->alpha > 250) {
|
||||
this->alpha = 255;
|
||||
this->actor.flags |= ACTOR_FLAG_1;
|
||||
this->actionFunc = EnYb_Idle;
|
||||
}
|
||||
EnYb_EnableProximityMusic(this);
|
||||
}
|
||||
}
|
||||
|
||||
void EnYb_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
EnYb* this = THIS;
|
||||
|
||||
if (CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_1)) {
|
||||
Collider_UpdateCylinder(&this->actor, &this->collider);
|
||||
CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
|
||||
}
|
||||
if (CHECK_FLAG_ALL(this->actor.flags, ACTOR_FLAG_1)) {
|
||||
Actor_MoveWithGravity(&this->actor);
|
||||
Actor_UpdateBgCheckInfo(globalCtx, &this->actor, 40.0f, 25.0f, 40.0f, 5);
|
||||
}
|
||||
|
||||
this->actionFunc(this, globalCtx);
|
||||
|
||||
if (this->cutsceneIndex != -1 && ActorCutscene_GetCurrentIndex() != this->cutscenes[this->cutsceneIndex]) {
|
||||
if (ActorCutscene_GetCurrentIndex() == 0x7C) {
|
||||
ActorCutscene_Stop(0x7C);
|
||||
ActorCutscene_SetIntentToPlay(this->cutscenes[this->cutsceneIndex]);
|
||||
} else if (ActorCutscene_GetCanPlayNext(this->cutscenes[this->cutsceneIndex])) {
|
||||
if (this->cutsceneIndex == 0) {
|
||||
ActorCutscene_StartAndSetUnkLinkFields(this->cutscenes[this->cutsceneIndex], &this->actor);
|
||||
}
|
||||
} else {
|
||||
ActorCutscene_SetIntentToPlay(this->cutscenes[this->cutsceneIndex]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EnYb_PostLimbDrawOpa(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
EnYb* this = THIS;
|
||||
|
||||
if (limbIndex == YB_LIMB_HEAD) {
|
||||
Matrix_MultiplyVector3fByState(&D_80BFB2F4, &this->actor.focus.pos);
|
||||
}
|
||||
if (limbIndex == YB_LIMB_LEGS_ROOT) {
|
||||
Matrix_MultiplyVector3fByState(&gZeroVec3f, &this->shadowPos);
|
||||
}
|
||||
}
|
||||
|
||||
void EnYb_PostLimbDrawXlu(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
EnYb* this = THIS;
|
||||
|
||||
if (limbIndex == YB_LIMB_HEAD) {
|
||||
Matrix_MultiplyVector3fByState(&D_80BFB300, &this->actor.focus.pos);
|
||||
}
|
||||
if (limbIndex == YB_LIMB_LEGS_ROOT) {
|
||||
Matrix_MultiplyVector3fByState(&gZeroVec3f, &this->shadowPos);
|
||||
}
|
||||
}
|
||||
|
||||
void EnYb_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
EnYb* this = THIS;
|
||||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx);
|
||||
|
||||
if (this->alpha != 0) {
|
||||
if (this->alpha < 255) {
|
||||
if (this->alpha > 128) {
|
||||
func_8012C2B4(POLY_XLU_DISP++);
|
||||
Scene_SetRenderModeXlu(globalCtx, 2, 2);
|
||||
} else {
|
||||
func_8012C304(POLY_XLU_DISP++);
|
||||
Scene_SetRenderModeXlu(globalCtx, 1, 2);
|
||||
}
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, this->alpha);
|
||||
|
||||
if (1) {}
|
||||
|
||||
POLY_XLU_DISP =
|
||||
SkelAnime_DrawFlex(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
|
||||
this->skelAnime.dListCount, NULL, EnYb_PostLimbDrawXlu, &this->actor, POLY_XLU_DISP);
|
||||
|
||||
} else {
|
||||
func_8012C28C(globalCtx->state.gfxCtx);
|
||||
Scene_SetRenderModeXlu(globalCtx, 0, 1);
|
||||
SkelAnime_DrawFlexOpa(globalCtx, this->skelAnime.skeleton, this->skelAnime.jointTable,
|
||||
this->skelAnime.dListCount, NULL, EnYb_PostLimbDrawOpa, &this->actor);
|
||||
}
|
||||
}
|
||||
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx);
|
||||
}
|
||||
|
|
|
@ -2,17 +2,28 @@
|
|||
#define Z_EN_YB_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_yb/object_yb.h"
|
||||
|
||||
struct EnYb;
|
||||
|
||||
typedef void (*EnYbActionFunc)(struct EnYb*, GlobalContext*);
|
||||
|
||||
typedef struct EnYb {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x0144 */ char unk_144[0x2DC];
|
||||
/* 0x0420 */ EnYbActionFunc actionFunc;
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ SkelAnime skelAnime;
|
||||
/* 0x188 */ Vec3s jointTable[YB_LIMB_MAX];
|
||||
/* 0x20C */ UNK_TYPE1 unkPadding20C[0x94];
|
||||
/* 0x2A0 */ Vec3s morphTable[YB_LIMB_MAX];
|
||||
/* 0x324 */ UNK_TYPE1 unkPadding324[0x94];
|
||||
/* 0x3B8 */ ColliderCylinder collider;
|
||||
/* 0x404 */ Vec3f shadowPos;
|
||||
/* 0x410 */ u16 playerOcarinaOut;
|
||||
/* 0x412 */ s16 currentAnimIndex;
|
||||
/* 0x414 */ s16 alpha;
|
||||
/* 0x416 */ s16 cutscenes[2];
|
||||
/* 0x41A */ s16 cutsceneIndex;
|
||||
/* 0x41C */ s16 teachingCutsceneTimer;
|
||||
/* 0x420 */ EnYbActionFunc actionFunc;
|
||||
} EnYb; // size = 0x424
|
||||
|
||||
extern const ActorInit En_Yb_InitVars;
|
||||
|
||||
#endif // Z_EN_YB_H
|
||||
|
|
|
@ -16379,24 +16379,24 @@
|
|||
0x80BFA100:("EnYb_Init",),
|
||||
0x80BFA2D0:("EnYb_Destroy",),
|
||||
0x80BFA2FC:("func_80BFA2FC",),
|
||||
0x80BFA350:("func_80BFA350",),
|
||||
0x80BFA444:("func_80BFA444",),
|
||||
0x80BFA5CC:("func_80BFA5CC",),
|
||||
0x80BFA634:("func_80BFA634",),
|
||||
0x80BFA67C:("func_80BFA67C",),
|
||||
0x80BFA6E0:("func_80BFA6E0",),
|
||||
0x80BFA710:("func_80BFA710",),
|
||||
0x80BFA730:("func_80BFA730",),
|
||||
0x80BFA868:("func_80BFA868",),
|
||||
0x80BFA91C:("func_80BFA91C",),
|
||||
0x80BFA9D4:("func_80BFA9D4",),
|
||||
0x80BFAB4C:("func_80BFAB4C",),
|
||||
0x80BFABF0:("func_80BFABF0",),
|
||||
0x80BFAC88:("func_80BFAC88",),
|
||||
0x80BFAE80:("func_80BFAE80",),
|
||||
0x80BFA350:("EnYb_ActorShadowFunc",),
|
||||
0x80BFA444:("EnYb_SetAnimation",),
|
||||
0x80BFA5CC:("EnYb_CanTalk",),
|
||||
0x80BFA634:("EnYb_UpdateAnimation",),
|
||||
0x80BFA67C:("EnYb_FinishTeachingCutscene",),
|
||||
0x80BFA6E0:("EnYb_ChangeCutscene",),
|
||||
0x80BFA710:("EnYb_EnableProximityMusic",),
|
||||
0x80BFA730:("EnYb_Disappear",),
|
||||
0x80BFA868:("EnYb_SetupLeaving",),
|
||||
0x80BFA91C:("EnYb_ReceiveMask",),
|
||||
0x80BFA9D4:("EnYb_Talk",),
|
||||
0x80BFAB4C:("EnYb_TeachingDanceFinish",),
|
||||
0x80BFABF0:("EnYb_TeachingDance",),
|
||||
0x80BFAC88:("EnYb_Idle",),
|
||||
0x80BFAE80:("EnYb_WaitForMidnight",),
|
||||
0x80BFAEFC:("EnYb_Update",),
|
||||
0x80BFB074:("func_80BFB074",),
|
||||
0x80BFB0E0:("func_80BFB0E0",),
|
||||
0x80BFB074:("EnYb_PostLimbDrawOpa",),
|
||||
0x80BFB0E0:("EnYb_PostLimbDrawXlu",),
|
||||
0x80BFB14C:("EnYb_Draw",),
|
||||
0x80BFB480:("EnRz_Init",),
|
||||
0x80BFB780:("func_80BFB780",),
|
||||
|
|
|
@ -2049,11 +2049,6 @@ D_06005C64 = 0x06005C64;
|
|||
|
||||
D_06000700 = 0x06000700;
|
||||
|
||||
// ovl_En_Yb
|
||||
|
||||
D_06000200 = 0x06000200;
|
||||
D_06005F48 = 0x06005F48;
|
||||
|
||||
// ovl_En_Zl4
|
||||
|
||||
D_06013328 = 0x06013328;
|
||||
|
|
Loading…
Reference in New Issue