mirror of https://github.com/zeldaret/mm.git
En_Talk_Gibud (Gibdos in the well) OK and somewhat documented (#486)
* Good start * More progress * More progress, need to try importing data now * Import data to C * Match a tricky item function * Matched another item function * Improve definition of EnTalkGibudUnkStruct * func_80AFFD3C OK * Draw functions done * EnTalkGibud_Init OK * EnTalkGibud OK * Document item and switch flag stuff * Name all static variables * Enum for animations * Document type * Document limb stuff * Tons of documentation * Document effect stuff * Document most unknown struct vars * Name most functions * Name final function + document text IDs * Organize forward declarations * Name stack variables * Document damage effects * Document limbs * One final pass * Respond to Anghelo's review * Respond to Anghelo's second review * Add space to force Jenkins to rerun (testing PR dashboard, please ignore) * Removing previously added space * Fix limb enum to add LIMB_NONE * Run ./format.sh, whoops * Respond to hensldm review + small cleanup * Respond to engineer's review * Fix item enum * This is a legacy PR, so using autogenned object symbols * Fix merge conflict * Move Talk_Gibud specific enums to .c
This commit is contained in:
parent
527c54b66e
commit
44ccdbe0d5
|
|
@ -2064,7 +2064,7 @@ void func_801149A0(s32 arg0, s16 arg1);
|
|||
// void func_80114B84(void);
|
||||
// void func_80114CA0(void);
|
||||
UNK_TYPE func_80114E90(void);
|
||||
UNK_TYPE func_80114F2C(UNK_TYPE arg0);
|
||||
UNK_TYPE func_80114F2C(u8 arg0);
|
||||
// void func_80114FD0(void);
|
||||
// void func_80115130(void);
|
||||
// void func_801152B8(void);
|
||||
|
|
@ -2077,7 +2077,7 @@ void func_80115844(GlobalContext* globalCtx, s16 param_2);
|
|||
s32 func_80115908(GlobalContext* globalCtx, u8 param_2);
|
||||
void func_801159c0(s16 param_1);
|
||||
void func_801159EC(s16 arg0);
|
||||
void func_80115A14(s32 arg0, s16 arg1);
|
||||
void func_80115A14(s16 arg0, s16 arg1);
|
||||
void Parameter_AddMagic(GlobalContext* globalCtx, s16 arg1);
|
||||
void func_80115D5C(GameState* gamestate);
|
||||
// void func_80115DB4(void);
|
||||
|
|
|
|||
3
spec
3
spec
|
|
@ -3852,8 +3852,7 @@ beginseg
|
|||
name "ovl_En_Talk_Gibud"
|
||||
compress
|
||||
include "build/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.o"
|
||||
include "build/data/ovl_En_Talk_Gibud/ovl_En_Talk_Gibud.data.o"
|
||||
include "build/data/ovl_En_Talk_Gibud/ovl_En_Talk_Gibud.reloc.o"
|
||||
include "build/src/overlays/actors/ovl_En_Talk_Gibud/ovl_En_Talk_Gibud_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -3,15 +3,86 @@
|
|||
|
||||
#include "global.h"
|
||||
|
||||
#define EN_TALK_GIBUD_REQUESTED_ITEM_INDEX(thisx) ((thisx)->params & 0xF)
|
||||
#define EN_TALK_GIBUD_SWITCH_FLAG(thisx) (((thisx)->params & 0xFF0) >> 4)
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ EN_TALK_GIBUD_TYPE_GIBDO,
|
||||
/* 1 */ EN_TALK_GIBUD_TYPE_REDEAD,
|
||||
} EnTalkGibudType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ EN_TALK_GIBUD_GRAB_START,
|
||||
/* 1 */ EN_TALK_GIBUD_GRAB_ATTACK,
|
||||
/* 2 */ EN_TALK_GIBUD_GRAB_RELEASE,
|
||||
} EnTalkGibudGrabState;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ EN_TALK_GIBUD_LIMB_NONE,
|
||||
/* 1 */ EN_TALK_GIBUD_LIMB_ROOT, // Root of Left Leg Root, Right Leg Root, Upper Body Root, and Pelvis
|
||||
/* 2 */ EN_TALK_GIBUD_LIMB_LEFT_LEG_ROOT,
|
||||
/* 3 */ EN_TALK_GIBUD_LIMB_LEFT_THIGH,
|
||||
/* 4 */ EN_TALK_GIBUD_LIMB_LEFT_LOWER_LEG,
|
||||
/* 5 */ EN_TALK_GIBUD_LIMB_LEFT_FOOT_ROOT,
|
||||
/* 6 */ EN_TALK_GIBUD_LIMB_LEFT_FOOT,
|
||||
/* 7 */ EN_TALK_GIBUD_LIMB_RIGHT_LEG_ROOT,
|
||||
/* 8 */ EN_TALK_GIBUD_LIMB_RIGHT_THIGH,
|
||||
/* 9 */ EN_TALK_GIBUD_LIMB_RIGHT_LOWER_LEG,
|
||||
/* 10 */ EN_TALK_GIBUD_LIMB_RIGHT_FOOT_ROOT,
|
||||
/* 11 */ EN_TALK_GIBUD_LIMB_RIGHT_FOOT,
|
||||
/* 12 */ EN_TALK_GIBUD_LIMB_UPPER_BODY_ROOT,
|
||||
/* 13 */ EN_TALK_GIBUD_LIMB_UPPER_BODY, // Root of Torso
|
||||
/* 14 */ EN_TALK_GIBUD_LIMB_TORSO, // Root of Left Arm Root, Right Arm Root, and Head Root
|
||||
/* 15 */ EN_TALK_GIBUD_LIMB_LEFT_ARM_ROOT,
|
||||
/* 16 */ EN_TALK_GIBUD_LIMB_LEFT_SHOULDER_AND_UPPER_ARM,
|
||||
/* 17 */ EN_TALK_GIBUD_LIMB_LEFT_FOREARM,
|
||||
/* 18 */ EN_TALK_GIBUD_LIMB_LEFT_HAND,
|
||||
/* 19 */ EN_TALK_GIBUD_LIMB_RIGHT_ARM_ROOT,
|
||||
/* 20 */ EN_TALK_GIBUD_LIMB_RIGHT_SHOULDER_AND_UPPER_ARM,
|
||||
/* 21 */ EN_TALK_GIBUD_LIMB_RIGHT_FOREARM,
|
||||
/* 22 */ EN_TALK_GIBUD_LIMB_RIGHT_HAND,
|
||||
/* 23 */ EN_TALK_GIBUD_LIMB_HEAD_ROOT,
|
||||
/* 24 */ EN_TALK_GIBUD_LIMB_HEAD,
|
||||
/* 25 */ EN_TALK_GIBUD_LIMB_PELVIS,
|
||||
/* 26 */ EN_TALK_GIBUD_LIMB_MAX,
|
||||
} EnTalkGibudLimbs;
|
||||
|
||||
struct EnTalkGibud;
|
||||
|
||||
typedef void (*EnTalkGibudActionFunc)(struct EnTalkGibud*, GlobalContext*);
|
||||
|
||||
typedef struct EnTalkGibud {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x0144 */ char unk_144[0x90];
|
||||
/* 0x01D4 */ EnTalkGibudActionFunc actionFunc;
|
||||
/* 0x01D8 */ char unk_1D8[0x220];
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ ColliderCylinder collider;
|
||||
/* 0x190 */ SkelAnime skelAnime;
|
||||
/* 0x1D4 */ EnTalkGibudActionFunc actionFunc;
|
||||
/* 0x1D8 */ Vec3f limbPos[15];
|
||||
/* 0x28C */ s32 limbIndex;
|
||||
/* 0x290 */ s32 requestedItemIndex;
|
||||
/* 0x294 */ s32 itemActionParam;
|
||||
/* 0x298 */ s32 switchFlag;
|
||||
/* 0x29C */ f32 effectAlpha;
|
||||
/* 0x2A0 */ f32 effectScale;
|
||||
/* 0x2A4 */ Vec3s jointTable[EN_TALK_GIBUD_LIMB_MAX];
|
||||
/* 0x340 */ Vec3s morphTable[EN_TALK_GIBUD_LIMB_MAX];
|
||||
/* 0x3DC */ s16 textId;
|
||||
/* 0x3DE */ Vec3s headRotation;
|
||||
/* 0x3E4 */ Vec3s upperBodyRotation;
|
||||
/* 0x3EA */ union {
|
||||
s16 playerStunWaitTimer; // Cannot stun the player if this is non-zero
|
||||
s16 grabDamageTimer;
|
||||
s16 headShakeTimer;
|
||||
s16 stunTimer;
|
||||
s16 deathTimer;
|
||||
s16 disappearanceTimer;
|
||||
};
|
||||
/* 0x3EC */ s16 grabState;
|
||||
/* 0x3EE */ s16 grabWaitTimer; // Cannot grab the player if this is non-zero
|
||||
/* 0x3F0 */ s16 effectTimer;
|
||||
/* 0x3F2 */ s16 type;
|
||||
/* 0x3F4 */ s16 isTalking;
|
||||
/* 0x3F6 */ u8 effectType;
|
||||
/* 0x3F7 */ s8 unk_3F7; // related to player->unk_ADD
|
||||
} EnTalkGibud; // size = 0x3F8
|
||||
|
||||
extern const ActorInit En_Talk_Gibud_InitVars;
|
||||
|
|
|
|||
|
|
@ -12817,53 +12817,53 @@
|
|||
0x80AFE650:("func_80AFE650",),
|
||||
0x80AFE8A0:("EnTalkGibud_Init",),
|
||||
0x80AFEB0C:("EnTalkGibud_Destroy",),
|
||||
0x80AFEB38:("func_80AFEB38",),
|
||||
0x80AFEB7C:("func_80AFEB7C",),
|
||||
0x80AFEC08:("func_80AFEC08",),
|
||||
0x80AFEC4C:("func_80AFEC4C",),
|
||||
0x80AFED08:("func_80AFED08",),
|
||||
0x80AFED7C:("func_80AFED7C",),
|
||||
0x80AFEFD4:("func_80AFEFD4",),
|
||||
0x80AFF030:("func_80AFF030",),
|
||||
0x80AFF22C:("func_80AFF22C",),
|
||||
0x80AFF288:("func_80AFF288",),
|
||||
0x80AFF330:("func_80AFF330",),
|
||||
0x80AFF378:("func_80AFF378",),
|
||||
0x80AFF45C:("func_80AFF45C",),
|
||||
0x80AFF4AC:("func_80AFF4AC",),
|
||||
0x80AFF618:("func_80AFF618",),
|
||||
0x80AFF6A0:("func_80AFF6A0",),
|
||||
0x80AFF700:("func_80AFF700",),
|
||||
0x80AFF76C:("func_80AFF76C",),
|
||||
0x80AFF880:("func_80AFF880",),
|
||||
0x80AFF8E4:("func_80AFF8E4",),
|
||||
0x80AFF9CC:("func_80AFF9CC",),
|
||||
0x80AFFA68:("func_80AFFA68",),
|
||||
0x80AFFAB0:("func_80AFFAB0",),
|
||||
0x80AFFC10:("func_80AFFC10",),
|
||||
0x80AFFC9C:("func_80AFFC9C",),
|
||||
0x80AFFD3C:("func_80AFFD3C",),
|
||||
0x80AFFE3C:("func_80AFFE3C",),
|
||||
0x80AFFE94:("func_80AFFE94",),
|
||||
0x80AFFFA4:("func_80AFFFA4",),
|
||||
0x80AFFFBC:("func_80AFFFBC",),
|
||||
0x80B000FC:("func_80B000FC",),
|
||||
0x80B00158:("func_80B00158",),
|
||||
0x80B00384:("func_80B00384",),
|
||||
0x80B0040C:("func_80B0040C",),
|
||||
0x80B00484:("func_80B00484",),
|
||||
0x80B004D0:("func_80B004D0",),
|
||||
0x80B005EC:("func_80B005EC",),
|
||||
0x80B00760:("func_80B00760",),
|
||||
0x80B008BC:("func_80B008BC",),
|
||||
0x80B008FC:("func_80B008FC",),
|
||||
0x80B0094C:("func_80B0094C",),
|
||||
0x80B00B8C:("func_80B00B8C",),
|
||||
0x80B00C94:("func_80B00C94",),
|
||||
0x80B00D9C:("func_80B00D9C",),
|
||||
0x80AFEB38:("EnTalkGibud_SetupIdle",),
|
||||
0x80AFEB7C:("EnTalkGibud_Idle",),
|
||||
0x80AFEC08:("EnTalkGibud_SetupAttemptPlayerStun",),
|
||||
0x80AFEC4C:("EnTalkGibud_AttemptStun",),
|
||||
0x80AFED08:("EnTalkGibud_SetupWalkToPlayer",),
|
||||
0x80AFED7C:("EnTalkGibud_WalkToPlayer",),
|
||||
0x80AFEFD4:("EnTalkGibud_SetupGrab",),
|
||||
0x80AFF030:("EnTalkGibud_Grab",),
|
||||
0x80AFF22C:("EnTalkGibud_SetupGrabFail",),
|
||||
0x80AFF288:("EnTalkGibud_GrabFail",),
|
||||
0x80AFF330:("EnTalkGibud_SetupTurnAwayAndShakeHead",),
|
||||
0x80AFF378:("EnTalkGibud_TurnAwayAndShakeHead",),
|
||||
0x80AFF45C:("EnTalkGibud_SetupWalkToHome",),
|
||||
0x80AFF4AC:("EnTalkGibud_WalkToHome",),
|
||||
0x80AFF618:("EnTalkGibud_SetupStunned",),
|
||||
0x80AFF6A0:("EnTalkGibud_Stunned",),
|
||||
0x80AFF700:("EnTalkGibud_SetupDamage",),
|
||||
0x80AFF76C:("EnTalkGibud_Damage",),
|
||||
0x80AFF880:("EnTalkGibud_SetupDead",),
|
||||
0x80AFF8E4:("EnTalkGibud_Dead",),
|
||||
0x80AFF9CC:("EnTalkGibud_SetupRevive",),
|
||||
0x80AFFA68:("EnTalkGibud_Revive",),
|
||||
0x80AFFAB0:("EnTalkGibud_GetTextIdForRequestedItem",),
|
||||
0x80AFFC10:("EnTalkGibud_GetNextTextBoxId",),
|
||||
0x80AFFC9C:("EnTalkGibud_PresentedItemMatchesRequest",),
|
||||
0x80AFFD3C:("EnTalkGibud_CheckPresentedItem",),
|
||||
0x80AFFE3C:("EnTalkGibud_SetupPassiveIdle",),
|
||||
0x80AFFE94:("EnTalkGibud_PassiveIdle",),
|
||||
0x80AFFFA4:("EnTalkGibud_SetupTalk",),
|
||||
0x80AFFFBC:("EnTalkGibud_Talk",),
|
||||
0x80B000FC:("EnTalkGibud_SetupDisappear",),
|
||||
0x80B00158:("EnTalkGibud_Disappear",),
|
||||
0x80B00384:("EnTalkGibud_FacePlayerWhenTalking",),
|
||||
0x80B0040C:("EnTalkGibud_PlayerInRangeWithCorrectState",),
|
||||
0x80B00484:("EnTalkGibud_PlayerOutOfRange",),
|
||||
0x80B004D0:("EnTalkGibud_CheckForGibdoMask",),
|
||||
0x80B005EC:("EnTalkGibud_TurnTowardsPlayer",),
|
||||
0x80B00760:("EnTalkGibud_MoveToIdealGrabPositionAndRotation",),
|
||||
0x80B008BC:("EnTalkGibud_PlayAnimation",),
|
||||
0x80B008FC:("EnTalkGibud_MoveWithGravity",),
|
||||
0x80B0094C:("EnTalkGibud_CheckDamageEffect",),
|
||||
0x80B00B8C:("EnTalkGibud_CheckCollision",),
|
||||
0x80B00C94:("EnTalkGibud_MoveGrabbedPlayerAwayFromWall",),
|
||||
0x80B00D9C:("EnTalkGibud_UpdateEffect",),
|
||||
0x80B00E48:("EnTalkGibud_Update",),
|
||||
0x80B00F08:("func_80B00F08",),
|
||||
0x80B00F64:("func_80B00F64",),
|
||||
0x80B00F08:("EnTalkGibud_OverrideLimbDraw",),
|
||||
0x80B00F64:("EnTalkGibud_PostLimbDraw",),
|
||||
0x80B01040:("EnTalkGibud_Draw",),
|
||||
0x80B01990:("EnGiant_ChangeAnimation",),
|
||||
0x80B01A74:("EnGiant_IsImprisoned",),
|
||||
|
|
|
|||
|
|
@ -3617,13 +3617,6 @@ D_06009890 = 0x06009890;
|
|||
D_0600A280 = 0x0600A280;
|
||||
D_0600AD98 = 0x0600AD98;
|
||||
|
||||
// ovl_En_Talk_Gibud
|
||||
|
||||
D_060053E8 = 0x060053E8;
|
||||
D_06009298 = 0x06009298;
|
||||
D_0600ABE0 = 0x0600ABE0;
|
||||
D_06010B88 = 0x06010B88;
|
||||
|
||||
// ovl_En_Tanron2
|
||||
|
||||
D_06003450 = 0x06003450;
|
||||
|
|
|
|||
Loading…
Reference in New Issue