mirror of
https://github.com/zeldaret/oot.git
synced 2025-05-09 18:43:45 +00:00
Merge 8927dcdd64
into 39ae99c4cb
This commit is contained in:
commit
236f3d77ae
6 changed files with 850 additions and 747 deletions
|
@ -1,26 +1,67 @@
|
|||
<Root>
|
||||
<!-- Goron -->
|
||||
<File Name="object_oF1d_map" Segment="6">
|
||||
<!-- animations -->
|
||||
<Animation Name="gGoronAnim_000750" Offset="0x750"/>
|
||||
<Animation Name="gGoronAnim_000D5C" Offset="0xD5C"/>
|
||||
<Animation Name="gGoronAnim_00161C" Offset="0x161C"/>
|
||||
<Animation Name="gGoronAnim_001A00" Offset="0x1A00"/>
|
||||
<Animation Name="gGoronAnim_0021D0" Offset="0x21D0"/>
|
||||
<Animation Name="gGoronAnim_0029A8" Offset="0x29A8"/>
|
||||
<Animation Name="gGoronAnim_002D80" Offset="0x2D80"/>
|
||||
<Animation Name="gGoronAnim_003768" Offset="0x3768"/>
|
||||
<Animation Name="gGoronAnim_0038E4" Offset="0x38E4"/>
|
||||
<Animation Name="gGoronAnim_004930" Offset="0x4930"/>
|
||||
<Animation Name="gGoronAnim_010590" Offset="0x10590"/>
|
||||
|
||||
<DList Name="gGoronDL_00BD80" Offset="0xBD80"/>
|
||||
<DList Name="gGoronDL_00C140" Offset="0xC140"/>
|
||||
|
||||
<DList Name="gGoronDL_00FD40" Offset="0xFD40"/>
|
||||
<DList Name="gGoronDL_00FD50" Offset="0xFD50"/>
|
||||
<Animation Name="gGoronSobbingAnim" Offset="0x750"/>
|
||||
<Animation Name="gGoronShakingAnim" Offset="0xD5C"/>
|
||||
<Animation Name="gGoronUncurlToProneAnim" Offset="0x161C"/>
|
||||
<Animation Name="gGoronProneAnim" Offset="0x1A00"/>
|
||||
<Animation Name="gGoronScratchingAnim" Offset="0x21D0"/>
|
||||
<Animation Name="gGoronWalkingAnim" Offset="0x29A8"/>
|
||||
<Animation Name="gGoronEyedropsTakenAnim" Offset="0x2D80"/>
|
||||
<Animation Name="gGoronCryingAnim" Offset="0x3768"/>
|
||||
<Animation Name="gGoronEyedropsAnim" Offset="0x38E4"/>
|
||||
<Animation Name="gGoronUncurlSitStandAnim" Offset="0x4930"/>
|
||||
<Animation Name="gGoronSidestepAnim" Offset="0x10590"/>
|
||||
|
||||
<!-- skeleton, limb none -->
|
||||
<Skeleton Name="gGoronSkel" Type="Flex" LimbType="Standard" Offset="0xFEF0"/>
|
||||
|
||||
<!-- limbs -->
|
||||
<Limb Name="gGoronRootLimb" LimbType="Standard" Offset="0xFDE0"/>
|
||||
<Limb Name="gGoronWaistLimb" LimbType="Standard" Offset="0xFDEC"/>
|
||||
<Limb Name="gGoronLegsLimb" LimbType="Standard" Offset="0xFDF8"/>
|
||||
<Limb Name="gGoronLeftThighLimb" LimbType="Standard" Offset="0xFE04"/>
|
||||
<Limb Name="gGoronLeftShinLimb" LimbType="Standard" Offset="0xFE10"/>
|
||||
<Limb Name="gGoronLeftFootLimb" LimbType="Standard" Offset="0xFE1C"/>
|
||||
<Limb Name="gGoronRightThighLimb" LimbType="Standard" Offset="0xFE28"/>
|
||||
<Limb Name="gGoronRightShinLimb" LimbType="Standard" Offset="0xFE34"/>
|
||||
<Limb Name="gGoronRightFootLimb" LimbType="Standard" Offset="0xFE40"/>
|
||||
<Limb Name="gGoronTorsoLimb" LimbType="Standard" Offset="0xFE4C"/>
|
||||
<Limb Name="gGoronLeftArmLimb" LimbType="Standard" Offset="0xFE58"/>
|
||||
<Limb Name="gGoronLeftForearmLimb" LimbType="Standard" Offset="0xFE64"/>
|
||||
<Limb Name="gGoronLeftHandLimb" LimbType="Standard" Offset="0xFE70"/>
|
||||
<Limb Name="gGoronRightArmLimb" LimbType="Standard" Offset="0xFE7C"/>
|
||||
<Limb Name="gGoronRightForearmLimb" LimbType="Standard" Offset="0xFE88"/>
|
||||
<Limb Name="gGoronRightHandLimb" LimbType="Standard" Offset="0xFE94"/>
|
||||
<Limb Name="gGoronHeadLimb" LimbType="Standard" Offset="0xFEA0"/>
|
||||
|
||||
<!-- limb display lists -->
|
||||
<DList Name="gGoronWaistDL" Offset="0x8708"/>
|
||||
<DList Name="gGoronLeftThighDL" Offset="0x8C80"/>
|
||||
<DList Name="gGoronLeftShinDL" Offset="0x8D70"/>
|
||||
<DList Name="gGoronLeftFootDL" Offset="0x8EC0"/>
|
||||
<DList Name="gGoronRightThighDL" Offset="0x87D0"/>
|
||||
<DList Name="gGoronRightShinDL" Offset="0x88C0"/>
|
||||
<DList Name="gGoronRightFootDL" Offset="0x8A10"/>
|
||||
<DList Name="gGoronTorsoDL" Offset="0x6F90"/>
|
||||
<DList Name="gGoronLeftArmDL" Offset="0x8218"/>
|
||||
<DList Name="gGoronLeftForearmDL" Offset="0x83A0"/>
|
||||
<DList Name="gGoronLeftHandDL" Offset="0x84E0"/>
|
||||
<DList Name="gGoronRightArmDL" Offset="0x7D28"/>
|
||||
<DList Name="gGoronRightForearmDL" Offset="0x7EB0"/>
|
||||
<DList Name="gGoronRightHandDL" Offset="0x7FF0"/>
|
||||
<DList Name="gGoronHeadDL" Offset="0x7458"/>
|
||||
|
||||
<!-- states display lists -->
|
||||
<DList Name="gGoronCurledUpDL" Offset="0xBD80"/>
|
||||
<DList Name="gGoronRollingDL" Offset="0xC140"/>
|
||||
|
||||
<!-- effects display lists -->
|
||||
<DList Name="gGoronParticleMaterialDL" Offset="0xFD40"/>
|
||||
<DList Name="gGoronParticleDL" Offset="0xFD50"/>
|
||||
|
||||
<!-- palettes -->
|
||||
<Texture Name="object_oF1d_map_TLUT_00C640" OutName="tlut_0000C640" Format="rgba16" Width="16" Height="16" Offset="0xC640"/>
|
||||
|
||||
<!-- Eye textures -->
|
||||
|
|
|
@ -266,7 +266,7 @@ void func_8097CEEC(DemoGo* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_8097CF20(DemoGo* this, PlayState* play, s32 arg2) {
|
||||
AnimationHeader* animation = &gGoronAnim_0029A8;
|
||||
AnimationHeader* animation = &gGoronWalkingAnim;
|
||||
if (arg2 != 0) {
|
||||
Animation_Change(&this->skelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(animation), ANIMMODE_LOOP,
|
||||
-8.0f);
|
||||
|
@ -341,7 +341,7 @@ void DemoGo_Update(Actor* thisx, PlayState* play) {
|
|||
|
||||
void DemoGo_Init(Actor* thisx, PlayState* play) {
|
||||
DemoGo* this = (DemoGo*)thisx;
|
||||
AnimationHeader* animation = &gGoronAnim_004930;
|
||||
AnimationHeader* animation = &gGoronUncurlSitStandAnim;
|
||||
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gGoronSkel, NULL, NULL, NULL, 0);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -7,20 +7,47 @@
|
|||
struct EnGo;
|
||||
|
||||
typedef void (*EnGoActionFunc)(struct EnGo*, struct PlayState*);
|
||||
typedef u16 (*callback1_80A3ED24)(struct PlayState*, struct EnGo*);
|
||||
typedef s16 (*callback2_80A3ED24)(struct PlayState*, struct EnGo*);
|
||||
|
||||
// WIP type docs
|
||||
// /* 0x00 */ GORON1_CITY_LINK,
|
||||
// /* 0x10 */ GORON1_FIRE_GENERIC,
|
||||
// /* 0x20 */ GORON1_DMT_DC_ENTRANCE,
|
||||
// /* 0x30 */ GORON1_DMT_ROLLING_SMALL,
|
||||
// /* 0x40 */ GORON1_DMT_BOMB_FLOWER,
|
||||
// /* 0x50 */ GORON1_CITY_ENTRANCE,
|
||||
// /* 0x60 */ GORON1_CITY_ISLAND,
|
||||
// /* 0x70 */ GORON1_CITY_LOST_WOODS,
|
||||
// /* 0x80 */ // Not Used
|
||||
// /* 0x90 */ GORON1_DMT_BIGGORON,
|
||||
typedef enum GoronLimb {
|
||||
/* 0 */ GORON_LIMB_NONE, // skeleton itself
|
||||
/* 1 */ GORON_LIMB_ROOT,
|
||||
/* 2 */ GORON_LIMB_WAIST, // drives bottom submesh
|
||||
/* 3 */ GORON_LIMB_LEGS,
|
||||
/* 4 */ GORON_LIMB_LEFT_THIGH,
|
||||
/* 5 */ GORON_LIMB_LEFT_SHIN,
|
||||
/* 6 */ GORON_LIMB_LEFT_FOOT,
|
||||
/* 7 */ GORON_LIMB_RIGHT_THIGH,
|
||||
/* 8 */ GORON_LIMB_RIGHT_SHIN,
|
||||
/* 9 */ GORON_LIMB_RIGHT_FOOT,
|
||||
/* 10 */ GORON_LIMB_TORSO, // drives top submesh
|
||||
/* 11 */ GORON_LIMB_LEFT_ARM,
|
||||
/* 12 */ GORON_LIMB_LEFT_FOREARM,
|
||||
/* 13 */ GORON_LIMB_LEFT_HAND,
|
||||
/* 14 */ GORON_LIMB_RIGHT_ARM,
|
||||
/* 15 */ GORON_LIMB_RIGHT_FOREARM,
|
||||
/* 16 */ GORON_LIMB_RIGHT_HAND,
|
||||
/* 17 */ GORON_LIMB_HEAD,
|
||||
/* 18 */ GORON_LIMB_MAX
|
||||
} GoronLimb;
|
||||
|
||||
typedef enum EnGoType {
|
||||
ENGO_TYPE_CITY_LINK = (0 << 4),
|
||||
ENGO_TYPE_FIRE_GENERIC = (1 << 4),
|
||||
ENGO_TYPE_DMT_DC_ENTRANCE = (2 << 4),
|
||||
ENGO_TYPE_DMT_ROLLING_SMALL = (3 << 4),
|
||||
ENGO_TYPE_DMT_BOMB_FLOWER = (4 << 4),
|
||||
ENGO_TYPE_CITY_ENTRANCE = (5 << 4),
|
||||
ENGO_TYPE_CITY_ISLAND = (6 << 4),
|
||||
ENGO_TYPE_CITY_LOST_WOODS = (7 << 4),
|
||||
ENGO_TYPE_DMT_BIGGORON = (9 << 4)
|
||||
} EnGoType;
|
||||
|
||||
#define ENGO_GET_PATH_INDEX(this) PARAMS_GET_U((this)->actor.params, 0, 4)
|
||||
#define ENGO_GET_TYPE(this) PARAMS_GET_NOSHIFT((this)->actor.params, 4, 4)
|
||||
#define ENGO_IS_CAGE_OPEN_SWITCH_FLAG(this) PARAMS_GET_NOMASK((this)->actor.params, 8)
|
||||
|
||||
#define ENGO_PATH_NONE NBITS_TO_MASK(4)
|
||||
#define ENGO_GET_SPEED_SCALE(this) (ENGO_GET_TYPE(this) == ENGO_TYPE_DMT_BIGGORON ? 0.5f : 1.0f)
|
||||
|
||||
#define EN_GO_EFFECT_COUNT 20
|
||||
|
||||
|
@ -44,18 +71,18 @@ typedef struct EnGo {
|
|||
/* 0x0194 */ ColliderCylinder collider;
|
||||
/* 0x01E0 */ NpcInteractInfo interactInfo;
|
||||
/* 0x0208 */ char unk_208[0x4];
|
||||
/* 0x020C */ s16 unk_20C;
|
||||
/* 0x020E */ s16 unk_20E;
|
||||
/* 0x0210 */ s16 unk_210;
|
||||
/* 0x0212 */ s16 unk_212;
|
||||
/* 0x0214 */ s16 unk_214;
|
||||
/* 0x0216 */ s16 unk_216;
|
||||
/* 0x0218 */ s16 unk_218;
|
||||
/* 0x021A */ s16 unk_21A;
|
||||
/* 0x021C */ s16 unk_21C;
|
||||
/* 0x021E */ s16 unk_21E;
|
||||
/* 0x0220 */ s16 fidgetTableY[18];
|
||||
/* 0x0244 */ s16 fidgetTableZ[18];
|
||||
/* 0x020C */ s16 gaveSword;
|
||||
/* 0x020E */ s16 knockbackCooldown;
|
||||
/* 0x0210 */ s16 curledTimer;
|
||||
/* 0x0212 */ s16 attentionCooldown;
|
||||
/* 0x0214 */ s16 blinkTimer; // unused
|
||||
/* 0x0216 */ s16 eyeTexIndex; // unused
|
||||
/* 0x0218 */ s16 waypoint;
|
||||
/* 0x021A */ s16 bounceCounter;
|
||||
/* 0x021C */ s16 bounceTimer;
|
||||
/* 0x021E */ s16 eyedropsTimer;
|
||||
/* 0x0220 */ s16 fidgetTableY[GORON_LIMB_MAX];
|
||||
/* 0x0244 */ s16 fidgetTableZ[GORON_LIMB_MAX];
|
||||
/* 0x0268 */ EnGoEffect effects[EN_GO_EFFECT_COUNT];
|
||||
} EnGo; // size = 0x06C8
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -9,23 +9,6 @@ struct EnGo2;
|
|||
|
||||
typedef void (*EnGo2ActionFunc)(struct EnGo2*, struct PlayState*);
|
||||
|
||||
typedef enum GoronType {
|
||||
/* 0x00 */ GORON_CITY_ROLLING_BIG,
|
||||
/* 0x01 */ GORON_CITY_LINK,
|
||||
/* 0x02 */ GORON_DMT_BIGGORON,
|
||||
/* 0x03 */ GORON_FIRE_GENERIC,
|
||||
/* 0x04 */ GORON_DMT_BOMB_FLOWER,
|
||||
/* 0x05 */ GORON_DMT_ROLLING_SMALL,
|
||||
/* 0x06 */ GORON_DMT_DC_ENTRANCE,
|
||||
/* 0x07 */ GORON_CITY_ENTRANCE,
|
||||
/* 0x08 */ GORON_CITY_ISLAND,
|
||||
/* 0x09 */ GORON_CITY_LOWEST_FLOOR,
|
||||
/* 0x0A */ GORON_CITY_STAIRWELL,
|
||||
/* 0x0B */ GORON_CITY_LOST_WOODS,
|
||||
/* 0x0C */ GORON_DMT_FAIRY_HINT,
|
||||
/* 0x0D */ GORON_MARKET_BAZAAR
|
||||
} GoronType;
|
||||
|
||||
// WIP fire temple type docs
|
||||
// /* 0x00 */ UNUSED
|
||||
// /* 0x01 */ GORON_FIRE_LAVA_ROOM_OPEN
|
||||
|
@ -40,21 +23,20 @@ typedef enum GoronType {
|
|||
// /* 0x0A */ GORON_FIRE_MAZE_UPPER,
|
||||
// /* 0x0B */ GORON_FIRE_HIGHEST
|
||||
|
||||
|
||||
typedef struct EnGo2DataStruct1 {
|
||||
typedef struct EnGo2ColliderData {
|
||||
s16 unused;
|
||||
s16 yDist;
|
||||
s16 xzDist;
|
||||
s16 radius;
|
||||
s16 height;
|
||||
} EnGo2DataStruct1; // size = 0xA
|
||||
} EnGo2ColliderData; // size = 0xA
|
||||
|
||||
typedef struct EnGo2DataStruct2 {
|
||||
f32 shape_unk_10;
|
||||
typedef struct EnGo2ShapeData {
|
||||
f32 shadowScale;
|
||||
f32 scale;
|
||||
s8 actor_unk_1F;
|
||||
s8 attentionRangeType;
|
||||
f32 interactRange;
|
||||
} EnGo2DataStruct2; // size = 0x10
|
||||
} EnGo2ShapeData; // size = 0x10
|
||||
|
||||
typedef struct EnGo2DustEffectData {
|
||||
u8 initialTimer;
|
||||
|
@ -65,6 +47,30 @@ typedef struct EnGo2DustEffectData {
|
|||
f32 yAccel;
|
||||
} EnGo2DustEffectData; // size = 0x18
|
||||
|
||||
typedef enum GoronType {
|
||||
/* 0x0 */ GORON_CITY_HOT_RODDER,
|
||||
/* 0x1 */ GORON_CITY_LINK,
|
||||
/* 0x2 */ GORON_DMT_BIGGORON,
|
||||
/* 0x3 */ GORON_FIRE_GENERIC,
|
||||
/* 0x4 */ GORON_DMT_BOMB_FLOWER,
|
||||
/* 0x5 */ GORON_DMT_ROLLING_SMALL,
|
||||
/* 0x6 */ GORON_DMT_DC_ENTRANCE,
|
||||
/* 0x7 */ GORON_CITY_ENTRANCE,
|
||||
/* 0x8 */ GORON_CITY_ISLAND,
|
||||
/* 0x9 */ GORON_CITY_LOWEST_FLOOR,
|
||||
/* 0xA */ GORON_CITY_STAIRWELL,
|
||||
/* 0xB */ GORON_CITY_LOST_WOODS,
|
||||
/* 0xC */ GORON_DMT_FAIRY_HINT,
|
||||
/* 0xD */ GORON_MARKET_BAZAAR
|
||||
} GoronType;
|
||||
|
||||
#define ENGO2_GET_TYPE(this) PARAMS_GET_S((this)->actor.params, 0, 5)
|
||||
#define ENGO2_GET_PATH_INDEX(this) PARAMS_GET_S((this)->actor.params, 5, 5)
|
||||
#define ENGO2_CAGED_SWITCH_FLAG(this) PARAMS_GET_S((this)->actor.params, 10, 6)
|
||||
|
||||
#define ENGO2_PATH_INDEX_MAX NBITS_TO_MASK(5)
|
||||
#define ENGO2_IS_CAGE_OPEN(play, this) Flags_GetSwitch(play, ENGO2_CAGED_SWITCH_FLAG(this))
|
||||
|
||||
#define EN_GO2_EFFECT_COUNT 10
|
||||
|
||||
typedef struct EnGo2 {
|
||||
|
@ -74,38 +80,35 @@ typedef struct EnGo2 {
|
|||
/* 0x0194 */ NpcInteractInfo interactInfo;
|
||||
/* 0x01BC */ ColliderCylinder collider;
|
||||
/* 0x0208 */ struct Path* path;
|
||||
/* 0x020C */ u8 unk_20C; // counter for GORON_CITY_LINK animation
|
||||
/* 0x020D */ u8 dialogState;
|
||||
/* 0x020C */ u8 messageEntry; // tracks message state changes, like with `BOX_BREAK` or `TEXTID`
|
||||
/* 0x020D */ u8 messageState; // last known result of `Message_GetState`
|
||||
/* 0x020E */ u8 reverse;
|
||||
/* 0x020F */ u8 isAwake; // Conditional
|
||||
/* 0x020F */ u8 isTalkative;
|
||||
/* 0x0210 */ s8 waypoint;
|
||||
/* 0x0211 */ u8 unk_211; // Conditional
|
||||
// goron link: 0 - rolling, 1 - frozen
|
||||
// biggoron: 0 - give eyedrops, 1 - applying eyedrops, 2 - getting claimcheck
|
||||
// generic fire: 0 -
|
||||
/* 0x0211 */ u8 isUncurled;
|
||||
/* 0x0212 */ u8 goronState;
|
||||
/* 0x0213 */ u8 eyeMouthTexState; // 0, 1, 2, 3
|
||||
/* 0x0213 */ u8 eyeMouthTexState;
|
||||
/* 0x0214 */ u8 eyeTexIndex;
|
||||
/* 0x0215 */ u8 mouthTexIndex;
|
||||
/* 0x0216 */ u8 unk_216; // Set to z rotation, checked by waypoint
|
||||
/* 0x0216 */ u8 reverseWaypoint; // Set to z rotation, checked by waypoint
|
||||
/* 0x0218 */ f32 interactRange;
|
||||
/* 0x021C */ char unk_21C[0x04];
|
||||
/* 0x0220 */ f32 alpha; // Set to 0, used by func_80A45360, smoothed to this->actor.shape.shadowAlpha from either 0 or 255.0f
|
||||
/* 0x0220 */ f32 shadowAlpha;
|
||||
/* 0x0224 */ s16 blinkTimer;
|
||||
/* 0x0226 */ s16 fidgetTableY[18];
|
||||
/* 0x024A */ s16 fidgetTableZ[18];
|
||||
/* 0x0226 */ s16 fidgetTableY[GORON_LIMB_MAX];
|
||||
/* 0x024A */ s16 fidgetTableZ[GORON_LIMB_MAX];
|
||||
/* 0x026E */ u16 trackingMode;
|
||||
/* 0x0270 */ EnGoEffect effects[EN_GO2_EFFECT_COUNT];
|
||||
/* 0x04A0 */ Vec3f subCamEye;
|
||||
/* 0x04AC */ Vec3f subCamAt;
|
||||
/* 0x04B8 */ Vec3s jointTable[18];
|
||||
/* 0x0524 */ Vec3s morphTable[18];
|
||||
/* 0x0590 */ s16 unk_590; // timer
|
||||
/* 0x0592 */ s16 animTimer; // animTimer. Plays NA_SE_EN_MORIBLIN_WALK, NA_SE_EV_IRON_DOOR_OPEN, NA_SE_EV_IRON_DOOR_CLOSE
|
||||
/* 0x04B8 */ Vec3s jointTable[GORON_LIMB_MAX];
|
||||
/* 0x0524 */ Vec3s morphTable[GORON_LIMB_MAX];
|
||||
/* 0x0590 */ s16 bounceTimer;
|
||||
/* 0x0592 */ s16 animTimer;
|
||||
/* 0x0594 */ s32 getItemId;
|
||||
/* 0x0598 */ char unk_598[0x02];
|
||||
/* 0x059A */ s16 subCamId;
|
||||
/* 0x059C */ s16 unk_59C;
|
||||
/* 0x059C */ s16 bounceCounter;
|
||||
} EnGo2; // size = 0x05A0
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue