1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-08-12 01:40:47 +00:00

EnHy + objects docs (#1499)

* document object_bba

* Clean up cne

* object bob

* object_aob

* object_cob

* object_bji

* object_ahg

* object_boj

* All functions named plus some cleanup

* enums

* Remove body wiggle comments

* Format

* Remove case comments

* comments with default

* Format

* format
This commit is contained in:
Derek Hensley 2024-10-15 02:20:46 -07:00 committed by GitHub
parent 4f6e33e302
commit a53fb02699
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 1169 additions and 869 deletions

View file

@ -504,7 +504,7 @@ void DemoEc_DrawKokiriGirl(DemoEc* this, PlayState* play) {
}
void DemoEc_InitOldMan(DemoEc* this, PlayState* play) {
DemoEc_UseDrawObject(this, play);
DemoEc_InitSkelAnime(this, play, &object_bji_Skel_0000F0);
DemoEc_InitSkelAnime(this, play, &gHylianOldManSkel);
DemoEc_UseAnimationObject(this, play);
DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false);
func_8096D5D4(this, play);
@ -522,9 +522,9 @@ void DemoEc_UpdateOldMan(DemoEc* this, PlayState* play) {
void DemoEc_DrawOldMan(DemoEc* this, PlayState* play) {
static void* eyeTextures[] = {
object_bji_Tex_0005FC,
object_bji_Tex_0009FC,
object_bji_Tex_000DFC,
gHylianOldManEyeOpenTex,
gHylianOldManEyeHalfTex,
gHylianOldManEyeClosedTex,
};
static u8 color1[] = { 0, 50, 100, 255 };
static u8 color2[] = { 0, 50, 160, 255 };
@ -536,7 +536,7 @@ void DemoEc_DrawOldMan(DemoEc* this, PlayState* play) {
void DemoEc_InitBeardedMan(DemoEc* this, PlayState* play) {
DemoEc_UseDrawObject(this, play);
DemoEc_InitSkelAnime(this, play, &object_ahg_Skel_0000F0);
DemoEc_InitSkelAnime(this, play, &gHylianMan1Skel);
DemoEc_UseAnimationObject(this, play);
DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false);
func_8096D5D4(this, play);
@ -554,9 +554,9 @@ void DemoEc_UpdateBeardedMan(DemoEc* this, PlayState* play) {
void DemoEc_DrawBeardedMan(DemoEc* this, PlayState* play) {
static void* eyeTextures[] = {
object_ahg_Tex_00057C,
object_ahg_Tex_00067C,
object_ahg_Tex_00077C,
gHylianMan1BeardedEyeOpenTex,
gHylianMan1BeardedEyeHalfTex,
gHylianMan1BeardedEyeClosedTex,
};
static u8 color1[] = { 255, 255, 255, 255 };
static u8 color2[] = { 255, 255, 255, 255 };
@ -568,7 +568,7 @@ void DemoEc_DrawBeardedMan(DemoEc* this, PlayState* play) {
void DemoEc_InitWoman(DemoEc* this, PlayState* play) {
DemoEc_UseDrawObject(this, play);
DemoEc_InitSkelAnime(this, play, &object_bob_Skel_0000F0);
DemoEc_InitSkelAnime(this, play, &gHylianWoman2Skel);
DemoEc_UseAnimationObject(this, play);
DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false);
func_8096D5D4(this, play);
@ -586,9 +586,9 @@ void DemoEc_UpdateWoman(DemoEc* this, PlayState* play) {
void DemoEc_DrawWoman(DemoEc* this, PlayState* play) {
static void* eyeTextures[] = {
object_bob_Tex_0007C8,
object_bob_Tex_000FC8,
object_bob_Tex_0017C8,
gHylianWoman2EyeOpenTex,
gHylianWoman2EyeHalfTex,
gHylianWoman2EyeClosedTex,
};
s32 eyeTexIndex = this->eyeTexIndex;
void* eyeTexture = eyeTextures[eyeTexIndex];
@ -598,7 +598,7 @@ void DemoEc_DrawWoman(DemoEc* this, PlayState* play) {
void DemoEc_InitOldWoman(DemoEc* this, PlayState* play) {
DemoEc_UseDrawObject(this, play);
DemoEc_InitSkelAnime(this, play, &object_bba_Skel_0000F0);
DemoEc_InitSkelAnime(this, play, &gHylianOldWomanSkel);
DemoEc_UseAnimationObject(this, play);
DemoEc_ChangeAnimation(this, &gDemoEcOldManAnim, 0, 0.0f, false);
func_8096D5D4(this, play);
@ -614,7 +614,7 @@ void DemoEc_UpdateOldWoman(DemoEc* this, PlayState* play) {
}
void DemoEc_DrawOldWoman(DemoEc* this, PlayState* play) {
DemoEc_DrawSkeleton(this, play, &object_bba_Tex_0004C8, NULL, NULL, NULL);
DemoEc_DrawSkeleton(this, play, &gHylianOldWomanEyeTex, NULL, NULL, NULL);
}
void DemoEc_InitBossCarpenter(DemoEc* this, PlayState* play) {

View file

@ -80,8 +80,7 @@ void EnGuest_Update(Actor* thisx, PlayState* play) {
this->actor.flags &= ~ACTOR_FLAG_4;
Actor_ProcessInitChain(&this->actor, sInitChain);
SkelAnime_InitFlex(play, &this->skelAnime, &object_boj_Skel_0000F0, NULL, this->jointTable, this->morphTable,
16);
SkelAnime_InitFlex(play, &this->skelAnime, &gHylianMan2Skel, NULL, this->jointTable, this->morphTable, 16);
gSegments[6] = VIRTUAL_TO_PHYSICAL(play->objectCtx.slots[this->osAnimeObjectSlot].segment);
Animation_Change(&this->skelAnime, &gObjOsAnim_42AC, 1.0f, 0.0f, Animation_GetLastFrame(&gObjOsAnim_42AC),
ANIMMODE_LOOP, 0.0f);
@ -186,7 +185,7 @@ s32 EnGuest_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
OPEN_DISPS(play->state.gfxCtx, "../z_en_guest.c", 352);
if (limbIndex == 15) {
*dList = object_boj_DL_0059B0;
*dList = gHylianMan2BeardedHeadDL;
Matrix_Translate(1400.0f, 0.0f, 0.0f, MTXMODE_APPLY);
limbRot = this->interactInfo.headRot;
Matrix_RotateX(BINANG_TO_RAD_ALT(limbRot.y), MTXMODE_APPLY);
@ -212,9 +211,9 @@ s32 EnGuest_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
void EnGuest_Draw(Actor* thisx, PlayState* play) {
static void* D_80A50BA4[] = {
object_boj_Tex_0005FC,
object_boj_Tex_0006FC,
object_boj_Tex_0007FC,
gHylianMan2MustachedEyeOpenTex,
gHylianMan2MustachedEyeHalfTex,
gHylianMan2MustachedEyeClosedTex,
};
EnGuest* this = (EnGuest*)thisx;
s32 pad;

File diff suppressed because it is too large Load diff

View file

@ -4,31 +4,54 @@
#include "ultra64.h"
#include "global.h"
#define ENHY_GET_TYPE(thisx) PARAMS_GET_S((thisx)->params, 0, 7)
#define ENHY_GET_PATH_INDEX(thisx) PARAMS_GET_S((thisx)->params, 7, 4)
typedef enum EnHyType {
/* 0 */ ENHY_TYPE_AOB,
/* 1 */ ENHY_TYPE_COB,
/* 2 */ ENHY_TYPE_AHG_2,
/* 3 */ ENHY_TYPE_BOJ_3,
/* 4 */ ENHY_TYPE_AHG_4,
/* 5 */ ENHY_TYPE_BOJ_5,
/* 6 */ ENHY_TYPE_BBA,
/* 7 */ ENHY_TYPE_BJI_7,
/* 8 */ ENHY_TYPE_CNE_8,
/* 9 */ ENHY_TYPE_BOJ_9,
/* 10 */ ENHY_TYPE_BOJ_10,
/* 11 */ ENHY_TYPE_CNE_11,
/* 12 */ ENHY_TYPE_BOJ_12,
/* 13 */ ENHY_TYPE_AHG_13,
/* 14 */ ENHY_TYPE_BOJ_14,
/* 15 */ ENHY_TYPE_BJI_15,
/* 16 */ ENHY_TYPE_BOJ_16,
/* 17 */ ENHY_TYPE_AHG_17,
/* 18 */ ENHY_TYPE_BOB_18,
/* 19 */ ENHY_TYPE_BJI_19,
/* 20 */ ENHY_TYPE_AHG_20,
/* 0 */ ENHY_TYPE_DOG_LADY,
/* 1 */ ENHY_TYPE_WOMAN_3,
/* 2 */ ENHY_TYPE_MAN_1_BEARD,
/* 3 */ ENHY_TYPE_MAN_2_BALD,
/* 4 */ ENHY_TYPE_MAN_1_SHAVED_BLACK_SHIRT,
/* 5 */ ENHY_TYPE_BEGGAR,
/* 6 */ ENHY_TYPE_OLD_WOMAN,
/* 7 */ ENHY_TYPE_OLD_MAN,
/* 8 */ ENHY_TYPE_YOUNG_WOMAN_BROWN_HAIR,
/* 9 */ ENHY_TYPE_MAN_2_MUSTACHE_RED_SHIRT,
/* 10 */ ENHY_TYPE_MAN_2_MUSTACHE_BLUE_SHIRT,
/* 11 */ ENHY_TYPE_YOUNG_WOMAN_ORANGE_HAIR,
/* 12 */ ENHY_TYPE_MAN_2_ALT_MUSTACHE,
/* 13 */ ENHY_TYPE_MAN_1_BOWL_CUT_PURPLE_SHIRT,
/* 14 */ ENHY_TYPE_MAN_2_BEARD,
/* 15 */ ENHY_TYPE_OLD_MAN_BALD_BROWN_ROBE,
/* 16 */ ENHY_TYPE_MAN_2_MUSTACHE_WHITE_SHIRT,
/* 17 */ ENHY_TYPE_MAN_1_SHAVED_GREEN_SHIRT,
/* 18 */ ENHY_TYPE_WOMAN_2,
/* 19 */ ENHY_TYPE_OLD_MAN_BALD_PURPLE_ROBE,
/* 20 */ ENHY_TYPE_MAN_1_BOWL_CUT_GREEN_SHIRT,
/* 21 */ ENHY_TYPE_MAX
} EnHyType;
typedef enum EnHyLimb {
/* 0x00 */ ENHY_LIMB_NONE,
/* 0x01 */ ENHY_LIMB_PELVIS,
/* 0x02 */ ENHY_LIMB_LEFT_THIGH,
/* 0x03 */ ENHY_LIMB_LEFT_SHIN,
/* 0x04 */ ENHY_LIMB_LEFT_FOOT,
/* 0x05 */ ENHY_LIMB_RIGHT_THIGH,
/* 0x06 */ ENHY_LIMB_RIGHT_SHIN,
/* 0x07 */ ENHY_LIMB_RIGHT_FOOT,
/* 0x08 */ ENHY_LIMB_TORSO,
/* 0x09 */ ENHY_LIMB_LEFT_UPPER_ARM,
/* 0x0A */ ENHY_LIMB_LEFT_FOREARM,
/* 0x0B */ ENHY_LIMB_LEFT_HAND,
/* 0x0C */ ENHY_LIMB_RIGHT_UPPER_ARM,
/* 0x0D */ ENHY_LIMB_RIGHT_FOREARM,
/* 0x0E */ ENHY_LIMB_RIGHT_HAND,
/* 0x0F */ ENHY_LIMB_HEAD,
/* 0x10 */ ENHY_LIMB_MAX
} EnHyLimb;
struct EnHy;
typedef void (*EnHyActionFunc)(struct EnHy*, PlayState*);
@ -40,25 +63,25 @@ typedef struct EnHy {
/* 0x0194 */ char unk_194; // unused
/* 0x0195 */ u8 pathReverse;
/* 0x0196 */ s8 objectSlotHead;
/* 0x0197 */ s8 objectSlotSkel2; // 7 < limb < 15 (upper part?) (always same as objectSlotSkel1)
/* 0x0198 */ s8 objectSlotSkel1; // sets the object used when drawing the skeleton for limb <= 7 (lower part?)
/* 0x0197 */ s8 objectSlotUpperSkel; // upper body limbs object, 7 < limb < 15 (always same as objectSlotLowerSkel),
/* 0x0198 */ s8 objectSlotLowerSkel; // lower body limbs object, limb <= 7
/* 0x0199 */ s8 objectSlotOsAnime;
/* 0x019C */ ColliderCylinder collider;
/* 0x01E8 */ NpcInteractInfo interactInfo;
/* 0x0210 */ Path* path;
/* 0x0214 */ s8 waypoint;
/* 0x0215 */ s8 unk_215;
/* 0x0215 */ s8 playedSfx;
/* 0x0216 */ char unk_216[2]; // unused
/* 0x0218 */ s16 curEyeIndex;
/* 0x021A */ s16 nextEyeIndexTimer;
/* 0x021C */ s16 unk_21C[16]; // bodyWiggleY ?
/* 0x023C */ s16 unk_23C[16]; // bodyWiggleZ ?
/* 0x021C */ s16 fidgetTableY[16];
/* 0x023C */ s16 fidgetTableZ[16];
/* 0x025C */ f32 interactRange;
/* 0x0260 */ s32 unkGetItemId;
/* 0x0260 */ s32 getItemId;
/* 0x0264 */ Vec3f modelOffset;
/* 0x0270 */ Vec3s jointTable[16];
/* 0x02D0 */ Vec3s morphTable[16];
/* 0x0330 */ u16 unk_330;
/* 0x0270 */ Vec3s jointTable[ENHY_LIMB_MAX];
/* 0x02D0 */ Vec3s morphTable[ENHY_LIMB_MAX];
/* 0x0330 */ u16 talonEventChkInf;
} EnHy; // size = 0x0334
#endif

View file

@ -61,8 +61,7 @@ static s16 sObjectIds[6] = {
};
static FlexSkeletonHeader* sSkeletons[6] = {
&object_ahg_Skel_0000F0, &object_boj_Skel_0000F0, &object_boj_Skel_0000F0,
&object_boj_Skel_0000F0, &object_boj_Skel_0000F0, &object_boj_Skel_0000F0,
&gHylianMan1Skel, &gHylianMan2Skel, &gHylianMan2Skel, &gHylianMan2Skel, &gHylianMan2Skel, &gHylianMan2Skel,
};
static AnimationHeader* sAnimations[6] = {