General Cleanup 9 (#961)

* small z64animation cleanup

* z64

* actor

* bgcheck

* collisioncheck

* curve

* cutscene

* effect

* item

* light

* math

* player

* save

* save

* schedule

* skin

* transition

* Remove leading 0s from size = 0x10

* z64schedule enum

* PR

* enums
This commit is contained in:
Derek Hensley
2022-08-07 19:43:58 -04:00
committed by GitHub
parent dbe98b9776
commit 9a4319827b
17 changed files with 618 additions and 617 deletions
+66 -67
View File
@@ -98,17 +98,17 @@ typedef struct {
} AnimatedMaterial; // size = 0x8
typedef struct {
/* 0x00 */ Vec3s pos;
/* 0x06 */ s16 unk_06;
/* 0x08 */ Gfx* opa;
/* 0x0C */ Gfx* xlu;
} PolygonDlist2; // size = 0x8
/* 0x0 */ Vec3s pos;
/* 0x6 */ s16 unk_06;
/* 0x8 */ Gfx* opa;
/* 0xC */ Gfx* xlu;
} PolygonDlist2; // size = 0x10
typedef struct {
/* 0x00 */ u8 type;
/* 0x01 */ u8 num; // number of dlist entries
/* 0x04 */ void* start;
/* 0x08 */ void* end;
/* 0x0 */ u8 type;
/* 0x1 */ u8 num; // number of dlist entries
/* 0x4 */ void* start;
/* 0x8 */ void* end;
} PolygonType2; // size = 0xC
typedef struct {
@@ -156,7 +156,7 @@ typedef struct {
/* 0xA */ u8 colorsIndex;
/* 0xB */ u8 flags;
/* 0xC */ u8 lightParamsIndex;
} FireObjInitParams; // size = 0xD
} FireObjInitParams; // size = 0x10
typedef struct FireObjColors {
/* 0x0 */ Color_RGBA8 primColor;
@@ -183,17 +183,17 @@ typedef struct {
} GameInfo; // size = 0x15D4
typedef struct {
/* 0x0000 */ u32 size;
/* 0x0004 */ void* bufp;
/* 0x0008 */ void* head;
/* 0x000C */ void* tail;
/* 0x0 */ u32 size;
/* 0x4 */ void* bufp;
/* 0x8 */ void* head;
/* 0xC */ void* tail;
} TwoHeadArena; // size = 0x10
typedef struct {
/* 0x0000 */ u32 size;
/* 0x0004 */ Gfx* bufp;
/* 0x0008 */ Gfx* p;
/* 0x000C */ Gfx* d;
/* 0x0 */ u32 size;
/* 0x4 */ Gfx* bufp;
/* 0x8 */ Gfx* p;
/* 0xC */ Gfx* d;
} TwoHeadGfxArena; // size = 0x10
typedef struct {
@@ -663,29 +663,29 @@ typedef struct {
} EnvironmentContext; // size = 0x100
typedef struct {
/* 0x00000 */ View view;
/* 0x00168 */ void* skyboxStaticSegment[4];
/* 0x00178 */ void* skyboxPaletteStaticSegment;
/* 0x0017C */ Gfx* dListBuf;
/* 0x00180 */ Gfx* roomDL;
/* 0x00184 */ Vtx* roomVtx;
/* 0x00188 */ DmaRequest unk188;
/* 0x001A8 */ DmaRequest unk1A8;
/* 0x001C8 */ DmaRequest unk1C8;
/* 0x001E8 */ OSMesgQueue loadQueue;
/* 0x00200 */ OSMesg loadMsg;
/* 0x00204 */ s16 skyboxShouldDraw;
/* 0x00208 */ f32 rotX;
/* 0x0020C */ f32 rotY;
/* 0x00210 */ f32 rotZ;
/* 0x00214 */ Vec3f eye;
/* 0x00220 */ s16 angle;
/* 0x00222 */ u8 primR;
/* 0x00223 */ u8 primG;
/* 0x00224 */ u8 primB;
/* 0x00225 */ u8 envR;
/* 0x00226 */ u8 envG;
/* 0x00227 */ u8 envB;
/* 0x000 */ View view;
/* 0x168 */ void* skyboxStaticSegment[4];
/* 0x178 */ void* skyboxPaletteStaticSegment;
/* 0x17C */ Gfx* dListBuf;
/* 0x180 */ Gfx* roomDL;
/* 0x184 */ Vtx* roomVtx;
/* 0x188 */ DmaRequest unk188;
/* 0x1A8 */ DmaRequest unk1A8;
/* 0x1C8 */ DmaRequest unk1C8;
/* 0x1E8 */ OSMesgQueue loadQueue;
/* 0x200 */ OSMesg loadMsg;
/* 0x204 */ s16 skyboxShouldDraw;
/* 0x208 */ f32 rotX;
/* 0x20C */ f32 rotY;
/* 0x210 */ f32 rotZ;
/* 0x214 */ Vec3f eye;
/* 0x220 */ s16 angle;
/* 0x222 */ u8 primR;
/* 0x223 */ u8 primG;
/* 0x224 */ u8 primB;
/* 0x225 */ u8 envR;
/* 0x226 */ u8 envG;
/* 0x227 */ u8 envB;
} SkyboxContext; // size = 0x228
typedef enum {
@@ -693,8 +693,8 @@ typedef enum {
} SkyboxId;
typedef struct ListAlloc {
/* 0x00 */ struct ListAlloc* prev;
/* 0x04 */ struct ListAlloc* next;
/* 0x0 */ struct ListAlloc* prev;
/* 0x4 */ struct ListAlloc* next;
} ListAlloc; // size = 0x8
typedef struct {
@@ -1003,7 +1003,7 @@ struct FireObjLight {
/* 0x00 */ LightNode* light;
/* 0x04 */ LightInfo lightInfo;
/* 0x12 */ u8 lightParamsIndex;
}; // size = 0x13
}; // size = 0x14
#define OS_SC_RETRACE_MSG 1
#define OS_SC_DONE_MSG 2
@@ -1062,22 +1062,21 @@ struct FireObj {
}; // size = 0x8B
typedef struct {
/* 0x00 */ u8 seqIndex;
/* 0x01 */ u8 nightSeqIndex;
/* 0x02 */ u8 unk_02;
/* 0x0 */ u8 seqIndex;
/* 0x1 */ u8 nightSeqIndex;
/* 0x2 */ u8 unk_02;
} SoundContext; // size = 0x3
typedef struct {
/* 0x00 */ s32 enabled;
/* 0x04 */ s32 timer;
/* 0x0 */ s32 enabled;
/* 0x4 */ s32 timer;
} FrameAdvanceContext; // size = 0x8
typedef enum {
/* 00 */ GAMEOVER_INACTIVE,
/* 01 */ GAMEOVER_DEATH_START,
/* 02 */ GAMEOVER_DEATH_WAIT_GROUND, // wait for player to fall and hit the ground
/* 03 */ GAMEOVER_DEATH_FADE_OUT, // wait before fading out
/* 0 */ GAMEOVER_INACTIVE,
/* 1 */ GAMEOVER_DEATH_START,
/* 2 */ GAMEOVER_DEATH_WAIT_GROUND, // wait for player to fall and hit the ground
/* 3 */ GAMEOVER_DEATH_FADE_OUT, // wait before fading out
/* 20 */ GAMEOVER_REVIVE_START = 20,
/* 21 */ GAMEOVER_REVIVE_RUMBLE,
/* 22 */ GAMEOVER_REVIVE_WAIT_GROUND, // wait for player to fall and hit the ground
@@ -1086,8 +1085,8 @@ typedef enum {
} GameOverState;
typedef struct {
/* 0x00 */ u16 state;
} GameOverContext; // size = 0x02
/* 0x0 */ u16 state;
} GameOverContext; // size = 0x2
struct PlayState {
/* 0x00000 */ GameState state;
@@ -1199,17 +1198,17 @@ typedef struct {
} struct_800BD888_arg1; // size = 0x28
typedef struct {
/* 0x00 */ u32 type;
/* 0x04 */ u32 setScissor;
/* 0x08 */ Color_RGBA8 color;
/* 0x0C */ Color_RGBA8 envColor;
/* 0x0 */ u32 type;
/* 0x4 */ u32 setScissor;
/* 0x8 */ Color_RGBA8 color;
/* 0xC */ Color_RGBA8 envColor;
} struct_801F8010; // size = 0x10
typedef struct {
/* 0x00 */ u32 useRgba;
/* 0x04 */ u32 setScissor;
/* 0x08 */ Color_RGBA8 primColor;
/* 0x08 */ Color_RGBA8 envColor;
/* 0x0 */ u32 useRgba;
/* 0x4 */ u32 setScissor;
/* 0x8 */ Color_RGBA8 primColor;
/* 0xC */ Color_RGBA8 envColor;
} struct_801F8020; // size = 0x10
typedef struct {
@@ -1237,9 +1236,9 @@ typedef struct {
} TargetRangeParams; // size = 0x8
typedef struct {
/* 0x00 */ u8* value;
/* 0x04 */ const char* name;
} FlagSetEntry; // size = 0x08
/* 0x0 */ u8* value;
/* 0x4 */ const char* name;
} FlagSetEntry; // size = 0x8
// TODO: Dedicated Header?
#define FRAM_BASE_ADDRESS 0x08000000 // FRAM Base Address in Cart Memory
+12 -12
View File
@@ -32,18 +32,18 @@ typedef struct {
} DamageTable; // size = 0x20
typedef struct {
/* 0x00 */ u8 health;
/* 0x02 */ s16 cylRadius;
/* 0x04 */ s16 cylHeight;
/* 0x06 */ u8 mass;
} CollisionCheckInfoInit;
/* 0x0 */ u8 health;
/* 0x2 */ s16 cylRadius;
/* 0x4 */ s16 cylHeight;
/* 0x6 */ u8 mass;
} CollisionCheckInfoInit; // size = 0x8
typedef struct {
/* 0x00 */ u8 health;
/* 0x02 */ s16 cylRadius;
/* 0x04 */ s16 cylHeight;
/* 0x06 */ s16 cylYShift;
/* 0x08 */ u8 mass;
/* 0x0 */ u8 health;
/* 0x2 */ s16 cylRadius;
/* 0x4 */ s16 cylHeight;
/* 0x6 */ s16 cylYShift;
/* 0x8 */ u8 mass;
} CollisionCheckInfoInit2; // size = 0xC
typedef struct {
@@ -398,8 +398,8 @@ typedef struct ActorContext {
} ActorContext; // size = 0x284
typedef enum {
/* 00 */ ACTOR_DRAW_DMGEFF_FIRE,
/* 01 */ ACTOR_DRAW_DMGEFF_BLUE_FIRE,
/* 0 */ ACTOR_DRAW_DMGEFF_FIRE,
/* 1 */ ACTOR_DRAW_DMGEFF_BLUE_FIRE,
/* 10 */ ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX = 10,
/* 11 */ ACTOR_DRAW_DMGEFF_FROZEN_SFX,
/* 20 */ ACTOR_DRAW_DMGEFF_LIGHT_ORBS = 20,
+79 -79
View File
@@ -34,49 +34,49 @@ typedef enum {
} AnimationTapers;
typedef struct {
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x06 */ u8 child; // The first child's index into the limb table.
/* 0x07 */ u8 sibling; // The parent limb's next limb index into the limb table.
/* 0x08 */ Gfx* dList; // Display lists for the limb. Index 0 is the normal display list, index 1 is the
/* 0x0 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x6 */ u8 child; // The first child's index into the limb table.
/* 0x7 */ u8 sibling; // The parent limb's next limb index into the limb table.
/* 0x8 */ Gfx* dList; // Display lists for the limb. Index 0 is the normal display list, index 1 is the
// far model display list.
} StandardLimb; // size = 0xC
// Model has limbs with only rigid meshes
typedef struct {
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x06 */ u8 child;
/* 0x07 */ u8 sibling;
/* 0x08 */ Gfx* dLists[2]; // Near and far
/* 0x0 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x6 */ u8 child;
/* 0x7 */ u8 sibling;
/* 0x8 */ Gfx* dLists[2]; // Near and far
} LodLimb; // size = 0x10
// Model has limbs with only rigid meshes
typedef struct {
/* 0x00 */ void** segment;
/* 0x04 */ u8 limbCount;
/* 0x0 */ void** segment;
/* 0x4 */ u8 limbCount;
} SkeletonHeader; // size = 0x8
// Model has limbs with flexible meshes
typedef struct {
/* 0x00 */ SkeletonHeader sh;
/* 0x08 */ u8 dListCount;
/* 0x0 */ SkeletonHeader sh;
/* 0x8 */ u8 dListCount;
} FlexSkeletonHeader; // size = 0xC
// Index into the frame data table.
typedef struct {
/* 0x00 */ u16 x;
/* 0x02 */ u16 y;
/* 0x04 */ u16 z;
} JointIndex; // size = 0x06
/* 0x0 */ u16 x;
/* 0x2 */ u16 y;
/* 0x4 */ u16 z;
} JointIndex; // size = 0x6
typedef struct {
/* 0x00 */ s16 frameCount;
} AnimationHeaderCommon;
/* 0x0 */ s16 frameCount;
} AnimationHeaderCommon; // size = 0x2
typedef struct {
/* 0x000 */ AnimationHeaderCommon common;
/* 0x004 */ s16* frameData; // referenced as tbl
/* 0x008 */ JointIndex* jointIndices; // referenced as ref_tbl
/* 0x00C */ u16 staticIndexMax;
/* 0x0 */ AnimationHeaderCommon common;
/* 0x4 */ s16* frameData; // referenced as tbl
/* 0x8 */ JointIndex* jointIndices; // referenced as ref_tbl
/* 0xC */ u16 staticIndexMax;
} AnimationHeader; // size = 0x10
typedef struct {
@@ -89,10 +89,10 @@ typedef struct {
} JointKey; // size = 0x12
typedef struct {
/* 0x00 */ s16 frameCount;
/* 0x02 */ s16 limbCount;
/* 0x04 */ s16* frameData;
/* 0x08 */ JointKey* jointKey;
/* 0x0 */ s16 frameCount;
/* 0x2 */ s16 limbCount;
/* 0x4 */ s16* frameData;
/* 0x8 */ JointKey* jointKey;
} LegacyAnimationHeader; // size = 0xC
typedef enum {
@@ -105,46 +105,46 @@ typedef enum {
} AnimationType;
typedef struct {
/* 0x000 */ DmaRequest req;
/* 0x020 */ OSMesgQueue msgQueue;
/* 0x038 */ OSMesg msg;
/* 0x00 */ DmaRequest req;
/* 0x20 */ OSMesgQueue msgQueue;
/* 0x38 */ OSMesg msg;
} AnimEntryLoadFrame; // size = 0x3C
typedef struct {
/* 0x000 */ u8 queueFlag;
/* 0x001 */ u8 vecCount;
/* 0x004 */ Vec3s* dst;
/* 0x008 */ Vec3s* src;
/* 0x0 */ u8 queueFlag;
/* 0x1 */ u8 vecCount;
/* 0x4 */ Vec3s* dst;
/* 0x8 */ Vec3s* src;
} AnimEntryCopyAll; // size = 0xC
typedef struct {
/* 0x000 */ u8 queueFlag;
/* 0x001 */ u8 vecCount;
/* 0x004 */ Vec3s* base;
/* 0x008 */ Vec3s* mod;
/* 0x00C */ f32 weight;
/* 0x0 */ u8 queueFlag;
/* 0x1 */ u8 vecCount;
/* 0x4 */ Vec3s* base;
/* 0x8 */ Vec3s* mod;
/* 0xC */ f32 weight;
} AnimEntryInterp; // size = 0x10
typedef struct {
/* 0x000 */ u8 queueFlag;
/* 0x001 */ u8 vecCount;
/* 0x004 */ Vec3s* dst;
/* 0x008 */ Vec3s* src;
/* 0x00C */ u8* copyFlag;
/* 0x0 */ u8 queueFlag;
/* 0x1 */ u8 vecCount;
/* 0x4 */ Vec3s* dst;
/* 0x8 */ Vec3s* src;
/* 0xC */ u8* copyFlag;
} AnimEntryCopyTrue; // size = 0x10
typedef struct {
/* 0x000 */ u8 queueFlag;
/* 0x001 */ u8 vecCount;
/* 0x004 */ Vec3s* dst;
/* 0x008 */ Vec3s* src;
/* 0x00C */ u8* copyFlag;
/* 0x0 */ u8 queueFlag;
/* 0x1 */ u8 vecCount;
/* 0x4 */ Vec3s* dst;
/* 0x8 */ Vec3s* src;
/* 0xC */ u8* copyFlag;
} AnimEntryCopyFalse; // size = 0x10
typedef struct {
/* 0x000 */ struct Actor* actor;
/* 0x004 */ struct SkelAnime* skelAnime;
/* 0x008 */ f32 unk08;
/* 0x0 */ struct Actor* actor;
/* 0x4 */ struct SkelAnime* skelAnime;
/* 0x8 */ f32 unk08;
} AnimEntryMoveActor; // size = 0xC
typedef union {
@@ -157,8 +157,8 @@ typedef union {
} AnimationEntryData; // size = 0x3C
typedef struct {
/* 0x000 */ u8 type;
/* 0x004 */ AnimationEntryData data;
/* 0x00 */ u8 type;
/* 0x04 */ AnimationEntryData data;
} AnimationEntry; // size = 0x40
typedef struct AnimationContext {
@@ -167,8 +167,8 @@ typedef struct AnimationContext {
} AnimationContext; // size = 0xC84
typedef struct {
/* 0x000 */ AnimationHeaderCommon common;
/* 0x004 */ u32 segment;
/* 0x0 */ AnimationHeaderCommon common;
/* 0x4 */ u32 segment;
} LinkAnimationHeader; // size = 0x8
typedef struct SkelAnime {
@@ -234,19 +234,19 @@ typedef struct {
} AnimationInfo; // size = 0x18
typedef struct {
/* 0x00 */ AnimationHeader* animation;
/* 0x04 */ f32 playSpeed;
/* 0x08 */ s16 startFrame;
/* 0x0A */ s16 frameCount;
/* 0x0C */ u8 mode;
/* 0x0E */ s16 morphFrames;
/* 0x0 */ AnimationHeader* animation;
/* 0x4 */ f32 playSpeed;
/* 0x8 */ s16 startFrame;
/* 0xA */ s16 frameCount;
/* 0xC */ u8 mode;
/* 0xE */ s16 morphFrames;
} AnimationInfoS; // size = 0x10
typedef struct AnimationSpeedInfo {
/* 0x00 */ AnimationHeader* animation;
/* 0x04 */ f32 playSpeed;
/* 0x08 */ u8 mode;
/* 0x0C */ f32 morphFrames;
/* 0x0 */ AnimationHeader* animation;
/* 0x4 */ f32 playSpeed;
/* 0x8 */ u8 mode;
/* 0xC */ f32 morphFrames;
} AnimationSpeedInfo; // size = 0x10
struct SkeletonInfo;
@@ -256,18 +256,18 @@ typedef s32 (*UnkKeyframeCallback)(struct PlayState* play, struct SkeletonInfo*
// Keyframe limb?
typedef struct {
/* 0x00 */ Gfx* dList;
/* 0x04 */ u8 unk_4;
/* 0x05 */ u8 flags;
/* 0x06 */ Vec3s root;
/* 0x0 */ Gfx* dList;
/* 0x4 */ u8 unk_4;
/* 0x5 */ u8 flags;
/* 0x6 */ Vec3s root;
} Struct_801BFA14_Arg1_Field4; // size = 0xC
// Other limb type?
typedef struct {
/* 0x00 */ Gfx* dList;
/* 0x04 */ u8 unk_4;
/* 0x05 */ u8 flags;
/* 0x06 */ u8 unk_6; // transform limb draw index
/* 0x0 */ Gfx* dList;
/* 0x4 */ u8 unk_4;
/* 0x5 */ u8 flags;
/* 0x6 */ u8 unk_6; // transform limb draw index
} Struct_801BFA14_Arg1_Field4_2; // size = 0x8
typedef struct {
@@ -279,18 +279,18 @@ typedef struct {
};
/* 0x08 */ s16* unk_8;
/* 0x0C */ s16* unk_C;
/* 0x0C */ char unk_10[0x2];
/* 0x10 */ char unk_10[0x2];
/* 0x12 */ s16 unk_12;
} Struct_801BFA14_Arg1;
} Struct_801BFA14_Arg1; // size = 0x14
typedef struct {
/* 0x00 */ u16* unk_0;
/* 0x04 */ s16* unk_4;
/* 0x08 */ s16* unk_8;
/* 0x0C */ s16* unk_C;
/* 0x0C */ char unk_10[0x2];
/* 0x10 */ char unk_10[0x2];
/* 0x12 */ s16 unk_12;
} SkeletonInfo_1C;
} SkeletonInfo_1C; // size = 0x14
typedef struct {
/* 0x00 */ f32 unk_0;
@@ -299,7 +299,7 @@ typedef struct {
/* 0x0C */ f32 unk_C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ s32 unk_14;
} FrameControl;
} FrameControl; // size = 0x18
// FlexKeyframeSkeleton ?
typedef struct SkeletonInfo {
@@ -310,7 +310,7 @@ typedef struct SkeletonInfo {
/* 0x24 */ f32 unk_24; // duration? current time?
/* 0x28 */ Vec3s* frameData; // array of 3 Vec3s
/* 0x2C */ s16* unk_2C;
} SkeletonInfo;
} SkeletonInfo; // size = 0x30
typedef s32 (*OverrideKeyframeDrawScaled)(struct PlayState* play, SkeletonInfo* skeletonInfo, s32 limbIndex, Gfx** dList,
u8* flags, struct Actor* actor, Vec3f* scale, Vec3s* rot, Vec3f* pos);
+15 -13
View File
@@ -72,20 +72,20 @@ typedef struct {
} ScaleRotPos; // size = 0x20
typedef struct CollisionPoly {
/* 0x00 */ u16 type;
/* 0x0 */ u16 type;
union {
u16 vtxData[3];
/* 0x2 */ u16 vtxData[3];
struct {
/* 0x02 */ u16 flags_vIA; // 0xE000 is poly exclusion flags (xpFlags), 0x1FFF is vtxId
/* 0x04 */ u16 flags_vIB; // 0xE000 is flags, 0x1FFF is vtxId
/* 0x2 */ u16 flags_vIA; // 0xE000 is poly exclusion flags (xpFlags), 0x1FFF is vtxId
/* 0x4 */ u16 flags_vIB; // 0xE000 is flags, 0x1FFF is vtxId
// 0x2000 = poly IsConveyor surface
/* 0x06 */ u16 vIC;
/* 0x6 */ u16 vIC;
};
};
/* 0x08 */ Vec3s normal; // Unit normal vector
/* 0x8 */ Vec3s normal; // Unit normal vector
// Value ranges from -0x7FFF to 0x7FFF, representing -1.0 to 1.0; 0x8000 is invalid
/* 0x0E */ s16 dist; // Plane distance from origin along the normal
/* 0xE */ s16 dist; // Plane distance from origin along the normal
} CollisionPoly; // size = 0x10
typedef struct {
@@ -158,9 +158,10 @@ typedef struct {
/* 0x2 */ u16 next; // index of the next SSNode in the list, or SS_NULL if last element
} SSNode; // size = 0x4
// represents a linked list of type SSNode
typedef struct {
u16 head; // index of the first SSNode in the list, or SS_NULL if the list is empty
} SSList; // represents a linked list of type SSNode
/* 0x0 */ u16 head; // index of the first SSNode in the list, or SS_NULL if the list is empty
} SSList; // size = 0x2
typedef struct {
/* 0x0 */ u16 max;
@@ -313,8 +314,9 @@ typedef struct {
} BgSpecialSceneMeshSubdivision; // size = 0xC
typedef struct {
s16 sceneId;
Vec3s subdivAmount;
s32 nodeListMax; // if -1, dynamically compute max nodes
} BgCheckSceneSubdivisionEntry;
/* 0x0 */ s16 sceneId;
/* 0x2 */ Vec3s subdivAmount;
/* 0x8 */ s32 nodeListMax; // if -1, dynamically compute max nodes
} BgCheckSceneSubdivisionEntry; // size = 0xC
#endif
+51 -51
View File
@@ -21,54 +21,54 @@ typedef struct {
} Collider; // size = 0x18
typedef struct {
/* 0x00 */ u8 colType; // Determines hitmarks and sound effects during AC collisions.
/* 0x01 */ u8 atFlags; // Information flags for AT collisions.
/* 0x02 */ u8 acFlags; // Information flags for OC collisions.
/* 0x03 */ u8 ocFlags1; // Information flags for OC collisions.
/* 0x04 */ u8 ocFlags2; // Flags related to which colliders it can OC collide with.
/* 0x05 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
} ColliderInit; // size = 0x06
/* 0x0 */ u8 colType; // Determines hitmarks and sound effects during AC collisions.
/* 0x1 */ u8 atFlags; // Information flags for AT collisions.
/* 0x2 */ u8 acFlags; // Information flags for OC collisions.
/* 0x3 */ u8 ocFlags1; // Information flags for OC collisions.
/* 0x4 */ u8 ocFlags2; // Flags related to which colliders it can OC collide with.
/* 0x5 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
} ColliderInit; // size = 0x6
typedef struct {
/* 0x00 */ u8 colType; // Determines hitmarks and sound effects during AC collisions.
/* 0x01 */ u8 atFlags; // Information flags for AT collisions.
/* 0x02 */ u8 acFlags; // Information flags for AC collisions.
/* 0x03 */ u8 ocFlags1; // Information flags for OC collisions.
/* 0x04 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
} ColliderInitType1; // size = 0x05
/* 0x0 */ u8 colType; // Determines hitmarks and sound effects during AC collisions.
/* 0x1 */ u8 atFlags; // Information flags for AT collisions.
/* 0x2 */ u8 acFlags; // Information flags for AC collisions.
/* 0x3 */ u8 ocFlags1; // Information flags for OC collisions.
/* 0x4 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
} ColliderInitType1; // size = 0x5
typedef struct {
/* 0x00 */ struct Actor* actor; // Attached actor
/* 0x04 */ u8 atFlags; // Information flags for AT collisions.
/* 0x05 */ u8 acFlags; // Information flags for AC collisions.
/* 0x06 */ u8 ocFlags1; // Information flags for OC collisions.
/* 0x07 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
} ColliderInitToActor; // size = 0x08
/* 0x0 */ struct Actor* actor; // Attached actor
/* 0x4 */ u8 atFlags; // Information flags for AT collisions.
/* 0x5 */ u8 acFlags; // Information flags for AC collisions.
/* 0x6 */ u8 ocFlags1; // Information flags for OC collisions.
/* 0x7 */ u8 shape; // JntSph, Cylinder, Tris, or Quad
} ColliderInitToActor; // size = 0x8
typedef struct {
/* 0x00 */ u32 dmgFlags; // Toucher damage type flags.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 damage; // Damage or Stun Timer
} ColliderTouch; // size = 0x08
/* 0x0 */ u32 dmgFlags; // Toucher damage type flags.
/* 0x4 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x5 */ u8 damage; // Damage or Stun Timer
} ColliderTouch; // size = 0x8
typedef struct {
/* 0x00 */ u32 dmgFlags; // Toucher damage type flags.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 damage; // Damage or Stun Timer
} ColliderTouchInit; // size = 0x08
/* 0x0 */ u32 dmgFlags; // Toucher damage type flags.
/* 0x4 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x5 */ u8 damage; // Damage or Stun Timer
} ColliderTouchInit; // size = 0x8
typedef struct {
/* 0x00 */ u32 dmgFlags; // Bumper damage type flags.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 defense; // Damage Resistance
/* 0x06 */ Vec3s hitPos; // Point of contact
} ColliderBump; // size = 0x0C
/* 0x0 */ u32 dmgFlags; // Bumper damage type flags.
/* 0x4 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x5 */ u8 defense; // Damage Resistance
/* 0x6 */ Vec3s hitPos; // Point of contact
} ColliderBump; // size = 0xC
typedef struct {
/* 0x00 */ u32 dmgFlags; // Bumper exclusion mask
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 defense; // Damage Resistance
} ColliderBumpInit; // size = 0x08
/* 0x0 */ u32 dmgFlags; // Bumper exclusion mask
/* 0x4 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x5 */ u8 defense; // Damage Resistance
} ColliderBumpInit; // size = 0x8
typedef struct ColliderInfo {
/* 0x00 */ ColliderTouch toucher; // Damage properties when acting as an AT collider
@@ -100,10 +100,10 @@ typedef struct {
} ColliderJntSphElementDim; // size = 0x18
typedef struct {
/* 0x00 */ u8 limb; // attached limb
/* 0x02 */ Sphere16 modelSphere; // model space sphere
/* 0x0A */ s16 scale; // world space sphere = model * scale * 0.01
} ColliderJntSphElementDimInit; // size = 0x0C
/* 0x0 */ u8 limb; // attached limb
/* 0x2 */ Sphere16 modelSphere; // model space sphere
/* 0xA */ s16 scale; // world space sphere = model * scale * 0.01
} ColliderJntSphElementDimInit; // size = 0xC
typedef struct {
/* 0x00 */ ColliderInfo info;
@@ -128,15 +128,15 @@ typedef struct {
} ColliderJntSphInit; // size = 0x10
typedef struct {
/* 0x00 */ ColliderInitType1 base;
/* 0x08 */ s32 count;
/* 0x0C */ ColliderJntSphElementInit* elements;
/* 0x0 */ ColliderInitType1 base;
/* 0x8 */ s32 count;
/* 0xC */ ColliderJntSphElementInit* elements;
} ColliderJntSphInitType1; // size = 0x10
typedef struct {
/* 0x00 */ ColliderInitToActor base;
/* 0x08 */ s32 count;
/* 0x0C */ ColliderJntSphElementInit* elements;
/* 0x0 */ ColliderInitToActor base;
/* 0x8 */ s32 count;
/* 0xC */ ColliderJntSphElementInit* elements;
} ColliderJntSphInitToActor; // size = 0x10
typedef struct {
@@ -190,9 +190,9 @@ typedef struct {
} ColliderTrisInit; // size = 0x10
typedef struct {
/* 0x00 */ ColliderInitType1 base;
/* 0x08 */ s32 count;
/* 0x0C */ ColliderTrisElementInit* elements;
/* 0x0 */ ColliderInitType1 base;
/* 0x8 */ s32 count;
/* 0xC */ ColliderTrisElementInit* elements;
} ColliderTrisInitType1; // size = 0x10
typedef struct {
@@ -254,8 +254,8 @@ typedef struct {
} CollisionCheckContext; // size = 0x29C
typedef struct {
/* 0 */ u8 blood;
/* 1 */ u8 effect;
/* 0x0 */ u8 blood;
/* 0x1 */ u8 effect;
} HitInfo; // size = 0x2
typedef enum {
+12 -12
View File
@@ -5,11 +5,11 @@
#include "unk.h"
typedef struct {
/* 0x00 */ s8 continueFlag;
/* 0x01 */ s8 cameraRoll;
/* 0x02 */ u16 nextPointFrame;
/* 0x04 */ f32 viewAngle; // in degrees
/* 0x08 */ Vec3s pos;
/* 0x0 */ s8 continueFlag;
/* 0x1 */ s8 cameraRoll;
/* 0x2 */ u16 nextPointFrame;
/* 0x4 */ f32 viewAngle; // in degrees
/* 0x8 */ Vec3s pos;
} CutsceneCameraPoint; // size = 0x10
typedef struct {
@@ -86,13 +86,13 @@ typedef struct {
} CsCmdTextbox; // size = 0xC
typedef enum {
/* 0 */ CS_TEXTBOX_TYPE_DEFAULT,
/* 1 */ CS_TEXTBOX_TYPE_1,
/* 2 */ CS_TEXTBOX_TYPE_LEARN_SONG,
/* 3 */ CS_TEXTBOX_TYPE_3,
/* 4 */ CS_TEXTBOX_TYPE_BOSSES_REMAINS,
/* 5 */ CS_TEXTBOX_TYPE_ALL_NORMAL_MASKS,
/* 0xFFFF */ CS_TEXTBOX_TYPE_NONE = 0xFFFF
/* -1 */ CS_TEXTBOX_TYPE_NONE = -1,
/* 0 */ CS_TEXTBOX_TYPE_DEFAULT,
/* 1 */ CS_TEXTBOX_TYPE_1,
/* 2 */ CS_TEXTBOX_TYPE_LEARN_SONG,
/* 3 */ CS_TEXTBOX_TYPE_3,
/* 4 */ CS_TEXTBOX_TYPE_BOSSES_REMAINS,
/* 5 */ CS_TEXTBOX_TYPE_ALL_NORMAL_MASKS
} CutsceneTextboxType;
typedef struct {
+4 -4
View File
@@ -15,10 +15,10 @@ typedef struct {
} DmaRequest; // size = 0x20
typedef struct {
/* 0x00 */ u32 vromStart;
/* 0x04 */ u32 vromEnd;
/* 0x08 */ u32 romStart;
/* 0x0C */ u32 romEnd;
/* 0x0 */ u32 vromStart;
/* 0x4 */ u32 vromEnd;
/* 0x8 */ u32 romStart;
/* 0xC */ u32 romEnd;
} DmaEntry; // size = 0x10
#endif
+12 -12
View File
@@ -33,10 +33,10 @@ struct PlayState;
#define rgObjBankIndex regs[11]
typedef struct {
/* 0x00 */ u8 active;
/* 0x01 */ u8 unk1;
/* 0x02 */ u8 unk2;
} EffectStatus; // size = 0x03
/* 0x0 */ u8 active;
/* 0x1 */ u8 unk1;
/* 0x2 */ u8 unk2;
} EffectStatus; // size = 0x3
typedef struct {
/* 0x00 */ Vec3f velocity;
@@ -227,11 +227,11 @@ typedef struct {
} EffectInfo; // size = 0x14
typedef enum {
/* 0x00 */ EFFECT_SPARK,
/* 0x01 */ EFFECT_BLURE1,
/* 0x02 */ EFFECT_BLURE2,
/* 0x03 */ EFFECT_SHIELD_PARTICLE,
/* 0x04 */ EFFECT_TIRE_MARK
/* 0 */ EFFECT_SPARK,
/* 1 */ EFFECT_BLURE1,
/* 2 */ EFFECT_BLURE2,
/* 3 */ EFFECT_SHIELD_PARTICLE,
/* 4 */ EFFECT_TIRE_MARK
} EffectType;
/* Effect Soft Sprites */
@@ -243,9 +243,9 @@ typedef void(*EffectSsUpdateFunc)(struct PlayState* play, u32 index, struct Effe
typedef void(*EffectSsDrawFunc)(struct PlayState* play, u32 index, struct EffectSs* particle);
typedef struct {
/* 0x00 */ u32 type;
/* 0x04 */ EffectSsInitFunc init;
} EffectSsInit; // size = 0x08
/* 0x0 */ u32 type;
/* 0x4 */ EffectSsInitFunc init;
} EffectSsInit; // size = 0x8
typedef struct {
/* 0x00 */ u32 vromStart;
+11 -11
View File
@@ -7,9 +7,9 @@
// TODO fill out these enums
typedef enum {
/* 0x0 */ EQUIP_TYPE_SWORD,
/* 0x1 */ EQUIP_TYPE_SHIELD,
/* 0x2 */ EQUIP_TYPE_MAX
/* 0 */ EQUIP_TYPE_SWORD,
/* 1 */ EQUIP_TYPE_SHIELD,
/* 2 */ EQUIP_TYPE_MAX
} EquipmentType;
typedef enum {
@@ -29,14 +29,14 @@ typedef enum {
} EquipValueShield;
typedef enum {
/* 0x00 */ UPG_QUIVER,
/* 0x01 */ UPG_BOMB_BAG,
/* 0x02 */ UPG_STRENGTH,
/* 0x03 */ UPG_SCALE,
/* 0x04 */ UPG_WALLET,
/* 0x05 */ UPG_BULLET_BAG,
/* 0x06 */ UPG_STICKS,
/* 0x07 */ UPG_NUTS
/* 0 */ UPG_QUIVER,
/* 1 */ UPG_BOMB_BAG,
/* 2 */ UPG_STRENGTH,
/* 3 */ UPG_SCALE,
/* 4 */ UPG_WALLET,
/* 5 */ UPG_BULLET_BAG,
/* 6 */ UPG_STICKS,
/* 7 */ UPG_NUTS
} UpgradeType;
typedef enum {
+3 -3
View File
@@ -82,9 +82,9 @@ typedef struct LightContext {
} LightContext; // size = 0x10
typedef enum LightType {
/* 0x00 */ LIGHT_POINT_NOGLOW,
/* 0x01 */ LIGHT_DIRECTIONAL,
/* 0x02 */ LIGHT_POINT_GLOW
/* 0 */ LIGHT_POINT_NOGLOW,
/* 1 */ LIGHT_DIRECTIONAL,
/* 2 */ LIGHT_POINT_GLOW
} LightType;
typedef void (*LightsBindFunc)(Lights* lights, LightParams* params, Vec3f* vec);
+36 -36
View File
@@ -6,47 +6,47 @@
#define VEC_SET(V,X,Y,Z) V.x=X;V.y=Y;V.z=Z
typedef struct {
/* 0x00 */ s16 x;
/* 0x02 */ s16 z;
} Vec2s; // size = 0x04
/* 0x0 */ s16 x;
/* 0x2 */ s16 z;
} Vec2s; // size = 0x4
typedef struct {
/* 0x00 */ f32 x;
/* 0x04 */ f32 z;
} Vec2f; // size = 0x08
/* 0x0 */ f32 x;
/* 0x4 */ f32 z;
} Vec2f; // size = 0x8
typedef struct {
/* 0x00 */ f32 x;
/* 0x04 */ f32 y;
/* 0x08 */ f32 z;
} Vec3f; // size = 0x0C
/* 0x0 */ f32 x;
/* 0x4 */ f32 y;
/* 0x8 */ f32 z;
} Vec3f; // size = 0xC
typedef struct {
/* 0x00 */ u16 x;
/* 0x02 */ u16 y;
/* 0x04 */ u16 z;
} Vec3us; // size = 0x06
/* 0x0 */ u16 x;
/* 0x2 */ u16 y;
/* 0x4 */ u16 z;
} Vec3us; // size = 0x6
typedef struct {
/* 0x00 */ s16 x;
/* 0x02 */ s16 y;
/* 0x04 */ s16 z;
} Vec3s; // size = 0x06
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
/* 0x4 */ s16 z;
} Vec3s; // size = 0x6
typedef struct {
/* 0x00 */ s32 x;
/* 0x04 */ s32 y;
/* 0x08 */ s32 z;
} Vec3i; // size = 0x0C
/* 0x0 */ s32 x;
/* 0x4 */ s32 y;
/* 0x8 */ s32 z;
} Vec3i; // size = 0xC
typedef struct {
/* 0x00 */ Vec3s center;
/* 0x06 */ s16 radius;
} Sphere16; // size = 0x08
/* 0x0 */ Vec3s center;
/* 0x6 */ s16 radius;
} Sphere16; // size = 0x8
typedef struct {
/* 0x00 */ Vec3f center;
/* 0x0C */ f32 radius;
/* 0x0 */ Vec3f center;
/* 0xC */ f32 radius;
} Spheref; // size = 0x10
/*
@@ -64,11 +64,11 @@ typedef struct {
} TriNorm; // size = 0x34
typedef struct {
/* 0x00 */ s16 radius;
/* 0x02 */ s16 height;
/* 0x04 */ s16 yShift;
/* 0x06 */ Vec3s pos;
} Cylinder16; // size = 0x0C
/* 0x0 */ s16 radius;
/* 0x2 */ s16 height;
/* 0x4 */ s16 yShift;
/* 0x6 */ Vec3s pos;
} Cylinder16; // size = 0xC
typedef struct {
/* 0x00 */ f32 radius;
@@ -89,10 +89,10 @@ typedef struct {
// Defines a point in the spherical coordinate system
typedef struct {
/* 0x00 */ f32 r; // radius
/* 0x04 */ s16 pitch; // polar (zenith) angle
/* 0x06 */ s16 yaw; // azimuthal angle
} VecSph; // size = 0x08
/* 0x0 */ f32 r; // radius
/* 0x4 */ s16 pitch; // polar (zenith) angle
/* 0x6 */ s16 yaw; // azimuthal angle
} VecSph; // size = 0x8
#define LERPIMP(v0, v1, t) ((v0) + (((v1) - (v0)) * (t)))
#define F32_LERP(v0, v1, t) ((1.0f - (t)) * (f32)(v0) + (t) * (f32)(v1))
+29 -29
View File
@@ -7,38 +7,38 @@
struct Player;
typedef enum {
/* 0x00 */ PLAYER_SHIELD_NONE,
/* 0x01 */ PLAYER_SHIELD_HEROS_SHIELD,
/* 0x02 */ PLAYER_SHIELD_MIRROR_SHIELD,
/* 0x03 */ PLAYER_SHIELD_MAX
/* 0 */ PLAYER_SHIELD_NONE,
/* 1 */ PLAYER_SHIELD_HEROS_SHIELD,
/* 2 */ PLAYER_SHIELD_MIRROR_SHIELD,
/* 3 */ PLAYER_SHIELD_MAX
} PlayerShield;
typedef enum {
/* 0x00 */ PLAYER_BOOTS_FIERCE_DEITY,
/* 0x01 */ PLAYER_BOOTS_HYLIAN,
/* 0x02 */ PLAYER_BOOTS_GIANT,
/* 0x03 */ PLAYER_BOOTS_DEKU,
/* 0x04 */ PLAYER_BOOTS_ZORA_LAND,
/* 0x05 */ PLAYER_BOOTS_ZORA_UNDERWATER,
/* 0x06 */ PLAYER_BOOTS_GORON,
/* 0x07 */ PLAYER_BOOTS_MAX
/* 0 */ PLAYER_BOOTS_FIERCE_DEITY,
/* 1 */ PLAYER_BOOTS_HYLIAN,
/* 2 */ PLAYER_BOOTS_GIANT,
/* 3 */ PLAYER_BOOTS_DEKU,
/* 4 */ PLAYER_BOOTS_ZORA_LAND,
/* 5 */ PLAYER_BOOTS_ZORA_UNDERWATER,
/* 6 */ PLAYER_BOOTS_GORON,
/* 7 */ PLAYER_BOOTS_MAX
} PlayerBoots;
typedef enum {
/* 0x00 */ PLAYER_STRENGTH_DEKU,
/* 0x01 */ PLAYER_STRENGTH_HUMAN,
/* 0x02 */ PLAYER_STRENGTH_ZORA,
/* 0x03 */ PLAYER_STRENGTH_GORON,
/* 0x04 */ PLAYER_STRENGTH_MAX
/* 0 */ PLAYER_STRENGTH_DEKU,
/* 1 */ PLAYER_STRENGTH_HUMAN,
/* 2 */ PLAYER_STRENGTH_ZORA,
/* 3 */ PLAYER_STRENGTH_GORON,
/* 4 */ PLAYER_STRENGTH_MAX
} PlayerStrength;
typedef enum {
/* 0x00 */ PLAYER_FORM_FIERCE_DEITY,
/* 0x01 */ PLAYER_FORM_GORON,
/* 0x02 */ PLAYER_FORM_ZORA,
/* 0x03 */ PLAYER_FORM_DEKU,
/* 0x04 */ PLAYER_FORM_HUMAN,
/* 0x05 */ PLAYER_FORM_MAX
/* 0 */ PLAYER_FORM_FIERCE_DEITY,
/* 1 */ PLAYER_FORM_GORON,
/* 2 */ PLAYER_FORM_ZORA,
/* 3 */ PLAYER_FORM_DEKU,
/* 4 */ PLAYER_FORM_HUMAN,
/* 5 */ PLAYER_FORM_MAX
} PlayerTransformation;
typedef enum {
@@ -248,12 +248,12 @@ typedef struct {
} struct_80122D44_arg1; // size >= 0x114
typedef struct struct_80122744_arg1 {
/* 0x00 */ s8 unk_00;
/* 0x01 */ s8 unk_01;
/* 0x02 */ s8 unk_02;
/* 0x03 */ s8 unk_03;
/* 0x04 */ Vec3s* unk_04;
} struct_80122744_arg1; // size = 0x08
/* 0x0 */ s8 unk_00;
/* 0x1 */ s8 unk_01;
/* 0x2 */ s8 unk_02;
/* 0x3 */ s8 unk_03;
/* 0x4 */ Vec3s* unk_04;
} struct_80122744_arg1; // size = 0x8
//
#define PLAYER_STATE1_1 (1 << 0)
+28 -28
View File
@@ -56,10 +56,10 @@ typedef struct Inventory {
} Inventory; // size = 0x88
typedef struct HorseData {
/* 0x00 */ s16 scene; // "spot_no"
/* 0x02 */ Vec3s pos; // "horse_x", "horse_y" and "horse_z"
/* 0x08 */ s16 yaw; // "horse_a"
} HorseData; // size = 0x0A
/* 0x0 */ s16 scene; // "spot_no"
/* 0x2 */ Vec3s pos; // "horse_x", "horse_y" and "horse_z"
/* 0x8 */ s16 yaw; // "horse_a"
} HorseData; // size = 0xA
typedef struct RespawnData {
/* 0x00 */ Vec3f pos;
@@ -92,32 +92,32 @@ typedef struct CycleSceneFlags {
} CycleSceneFlags; // size = 0x14
typedef struct SaveOptions {
/* 0x00 */ u16 optionId; // "option_id"
/* 0x02 */ u8 language; // "j_n"
/* 0x03 */ s8 audioSetting; // "s_sound"
/* 0x04 */ u8 languageSetting; // "language"
/* 0x05 */ u8 zTargetSetting; // "z_attention", 0: Switch; 1: Hold
} SaveOptions; // size = 0x06
/* 0x0 */ u16 optionId; // "option_id"
/* 0x2 */ u8 language; // "j_n"
/* 0x3 */ s8 audioSetting; // "s_sound"
/* 0x4 */ u8 languageSetting; // "language"
/* 0x5 */ u8 zTargetSetting; // "z_attention", 0: Switch; 1: Hold
} SaveOptions; // size = 0x6
typedef struct SavePlayerData {
/* 0x0000 */ char newf[6]; // "newf" Will always be "ZELDA3 for a valid save
/* 0x0006 */ u16 deaths; // "savect"
/* 0x0008 */ char playerName[8]; // "player_name"
/* 0x0010 */ s16 healthCapacity; // "max_life"
/* 0x0012 */ s16 health; // "now_life"
/* 0x0014 */ s8 magicLevel; // "magic_max"
/* 0x0015 */ s8 magic; // "magic_now"
/* 0x0016 */ s16 rupees; // "lupy_count"
/* 0x0018 */ u16 swordHealth; // "long_sword_hp"
/* 0x001A */ u16 tatlTimer; // "navi_timer"
/* 0x001C */ u8 magicAcquired; // "magic_mode"
/* 0x001D */ u8 doubleMagic; // "magic_ability"
/* 0x001E */ u8 doubleDefense; // "life_ability"
/* 0x001F */ u8 unk_1F; // "ocarina_round"
/* 0x0020 */ u8 unk_20; // "first_memory"
/* 0x0022 */ u16 owlActivationFlags; // "memory_warp_point"
/* 0x0024 */ u8 unk_24; // "last_warp_pt"
/* 0x0026 */ s16 savedSceneNum; // "scene_data_ID"
/* 0x00 */ char newf[6]; // "newf" Will always be "ZELDA3 for a valid save
/* 0x06 */ u16 deaths; // "savect"
/* 0x08 */ char playerName[8]; // "player_name"
/* 0x10 */ s16 healthCapacity; // "max_life"
/* 0x12 */ s16 health; // "now_life"
/* 0x14 */ s8 magicLevel; // "magic_max"
/* 0x15 */ s8 magic; // "magic_now"
/* 0x16 */ s16 rupees; // "lupy_count"
/* 0x18 */ u16 swordHealth; // "long_sword_hp"
/* 0x1A */ u16 tatlTimer; // "navi_timer"
/* 0x1C */ u8 magicAcquired; // "magic_mode"
/* 0x1D */ u8 doubleMagic; // "magic_ability"
/* 0x1E */ u8 doubleDefense; // "life_ability"
/* 0x1F */ u8 unk_1F; // "ocarina_round"
/* 0x20 */ u8 unk_20; // "first_memory"
/* 0x22 */ u16 owlActivationFlags; // "memory_warp_point"
/* 0x24 */ u8 unk_24; // "last_warp_pt"
/* 0x26 */ s16 savedSceneNum; // "scene_data_ID"
} SavePlayerData; // size = 0x28
typedef struct Save {
+219 -219
View File
File diff suppressed because it is too large Load Diff
+19 -19
View File
@@ -32,25 +32,25 @@
#define SCHEDULE_TIME_NOW SCHEDULE_CONVERT_TIME(gSaveContext.save.time)
typedef enum {
/* 0 */ SCHEDULE_CMD_ID_CHECK_FLAG_S, // Checks if a weekEventReg flag is set and branches if so, short range branch
/* 1 */ SCHEDULE_CMD_ID_CHECK_FLAG_L, // Checks if a weekEventReg flag is set and branches if so, long range branch
/* 2 */ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S, // Checks if the current time is within the range of the two provided times and branches if so, short range branch
/* 3 */ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_L, // Checks if the current time is within the range of the two provided times and branches if so, long range branch
/* 4 */ SCHEDULE_CMD_ID_RET_VAL_L, // Ends script and returns 2-byte value (Note: bugged as the return value size is only 1 byte in the struct)
/* 5 */ SCHEDULE_CMD_ID_RET_NONE, // Ends script without returning anything
/* 6 */ SCHEDULE_CMD_ID_RET_EMPTY, // Ends script and indicates return without changing existing value
/* 7 */ SCHEDULE_CMD_ID_NOP, // No-Op
/* 8 */ SCHEDULE_CMD_ID_CHECK_MISC_S, // Special check based on items or masks and branches if check passes, short range branch
/* 9 */ SCHEDULE_CMD_ID_RET_VAL_S, // Ends script and returns byte value
/* 10 */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S, // Checks if the current scene is not SceneNum and branches if so, short range branch
/* 11 */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L, // Checks if the current scene is not SceneNum and branches if so, long range branch
/* 12 */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S, // Checks if the current day is not Day and branches if so, short range branch
/* 13 */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L, // Checks if the current day is not Day and branches if so, long range branch
/* 14 */ SCHEDULE_CMD_ID_RET_TIME, // Returns 2 time values
/* 15 */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S, // Branches if the current time is less than the command time, short range branch
/* 16 */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L, // Branches if the current time is less than the command time, long range branch
/* 17 */ SCHEDULE_CMD_ID_BRANCH_S, // Always branch, short range branch
/* 18 */ SCHEDULE_CMD_ID_BRANCH_L, // Always branch, long range branch
/* 0x00 */ SCHEDULE_CMD_ID_CHECK_FLAG_S, // Checks if a weekEventReg flag is set and branches if so, short range branch
/* 0x01 */ SCHEDULE_CMD_ID_CHECK_FLAG_L, // Checks if a weekEventReg flag is set and branches if so, long range branch
/* 0x02 */ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_S, // Checks if the current time is within the range of the two provided times and branches if so, short range branch
/* 0x03 */ SCHEDULE_CMD_ID_CHECK_TIME_RANGE_L, // Checks if the current time is within the range of the two provided times and branches if so, long range branch
/* 0x04 */ SCHEDULE_CMD_ID_RET_VAL_L, // Ends script and returns 2-byte value (Note: bugged as the return value size is only 1 byte in the struct)
/* 0x05 */ SCHEDULE_CMD_ID_RET_NONE, // Ends script without returning anything
/* 0x06 */ SCHEDULE_CMD_ID_RET_EMPTY, // Ends script and indicates return without changing existing value
/* 0x07 */ SCHEDULE_CMD_ID_NOP, // No-Op
/* 0x08 */ SCHEDULE_CMD_ID_CHECK_MISC_S, // Special check based on items or masks and branches if check passes, short range branch
/* 0x09 */ SCHEDULE_CMD_ID_RET_VAL_S, // Ends script and returns byte value
/* 0x0A */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S, // Checks if the current scene is not SceneNum and branches if so, short range branch
/* 0x0B */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L, // Checks if the current scene is not SceneNum and branches if so, long range branch
/* 0x0C */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S, // Checks if the current day is not Day and branches if so, short range branch
/* 0x0D */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L, // Checks if the current day is not Day and branches if so, long range branch
/* 0x0E */ SCHEDULE_CMD_ID_RET_TIME, // Returns 2 time values
/* 0x0F */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S, // Branches if the current time is less than the command time, short range branch
/* 0x10 */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L, // Branches if the current time is less than the command time, long range branch
/* 0x11 */ SCHEDULE_CMD_ID_BRANCH_S, // Always branch, short range branch
/* 0x12 */ SCHEDULE_CMD_ID_BRANCH_L, // Always branch, long range branch
} ScheduleCommandId;
typedef enum {
+19 -19
View File
@@ -33,18 +33,18 @@ typedef struct {
} SkinTransformation; // size = 0xA
typedef struct {
/* 0x00 */ u16 vtxCount; // number of vertices in this modif entry
/* 0x02 */ u16 transformCount;
/* 0x04 */ u16 unk_04; // index of limbTransformations
/* 0x08 */ SkinVertex* skinVertices;
/* 0x0C */ SkinTransformation* limbTransformations;
/* 0x0 */ u16 vtxCount; // number of vertices in this modif entry
/* 0x2 */ u16 transformCount;
/* 0x4 */ u16 unk_04; // index of limbTransformations
/* 0x8 */ SkinVertex* skinVertices;
/* 0xC */ SkinTransformation* limbTransformations;
} SkinLimbModif; // size = 0x10
typedef struct {
/* 0x00 */ u16 totalVtxCount; // total vertex count for all modif entries
/* 0x02 */ u16 limbModifCount; // count of limbModifCount
/* 0x04 */ SkinLimbModif* limbModifications;
/* 0x08 */ Gfx* dlist;
/* 0x0 */ u16 totalVtxCount; // total vertex count for all modif entries
/* 0x2 */ u16 limbModifCount; // count of limbModifCount
/* 0x4 */ SkinLimbModif* limbModifications;
/* 0x8 */ Gfx* dlist;
} SkinAnimatedLimbData; // size = 0xC
// ZAPD compatibility typedefs
@@ -58,11 +58,11 @@ typedef SkinLimbModif Struct_800A598C;
#define SKIN_LIMB_TYPE_NORMAL 11
typedef struct {
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x06 */ u8 child;
/* 0x07 */ u8 sibling;
/* 0x08 */ s32 segmentType; // Type of data contained in segment
/* 0x0C */ void* segment; // Gfx* if segmentType is SKIN_LIMB_TYPE_NORMAL, SkinAnimatedLimbData if segmentType is SKIN_LIMB_TYPE_ANIMATED, NULL otherwise
/* 0x0 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x6 */ u8 child;
/* 0x7 */ u8 sibling;
/* 0x8 */ s32 segmentType; // Type of data contained in segment
/* 0xC */ void* segment; // Gfx* if segmentType is SKIN_LIMB_TYPE_NORMAL, SkinAnimatedLimbData if segmentType is SKIN_LIMB_TYPE_ANIMATED, NULL otherwise
} SkinLimb; // size = 0x10
typedef struct {
@@ -71,11 +71,11 @@ typedef struct {
} SkinLimbVtx; // size = 0xC
typedef struct {
/* 0x000 */ SkeletonHeader* skeletonHeader;
/* 0x004 */ MtxF mtx;
/* 0x044 */ s32 limbCount;
/* 0x048 */ SkinLimbVtx* vtxTable; // double buffered list of vertices for each limb
/* 0x04C */ SkelAnime skelAnime;
/* 0x00 */ SkeletonHeader* skeletonHeader;
/* 0x04 */ MtxF mtx;
/* 0x44 */ s32 limbCount;
/* 0x48 */ SkinLimbVtx* vtxTable; // double buffered list of vertices for each limb
/* 0x4C */ SkelAnime skelAnime;
} Skin; // size = 0x90
typedef void (*SkinPostDraw)(struct Actor* thisx, struct PlayState* play, Skin* skin);
+3 -3
View File
@@ -13,16 +13,16 @@ typedef struct {
/* 0x18 */ void (*setColor)(void* transition, u32 color);
/* 0x1C */ void (*setEnvColor)(void* transition, u32 color);
/* 0x20 */ s32 (*isDone)(void* transition);
} TransitionInit;
} TransitionInit; // size = 0x24
typedef struct {
/* 0x000 */ char unk_0[0xC];
/* 0x0 */ char unk_0[0xC];
} TransitionFade; // size = 0xC
extern const TransitionInit TransitionFade_InitVars;
typedef struct {
/* 0x000 */ char unk_0[0x20];
/* 0x00 */ char unk_0[0x20];
} TransitionCircle; // size = 0x20
extern const TransitionInit TransitionCircle_InitVars;