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 16:43:58 -07:00 committed by GitHub
parent dbe98b9776
commit 9a4319827b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 618 additions and 617 deletions

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

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,

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);

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

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 {

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 {

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

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;

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 {

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);

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))

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)

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 {

View File

@ -9,211 +9,210 @@
#define SPAWN_ROT_FLAGS(rotation, flags) (((rotation) << 7) | (flags))
typedef struct {
/* 0x00 */ uintptr_t vromStart;
/* 0x04 */ uintptr_t vromEnd;
/* 0x0 */ uintptr_t vromStart;
/* 0x4 */ uintptr_t vromEnd;
} RomFile; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ u32 data2;
} SCmdBase;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ u32 data2;
} SCmdBase; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdSpawnList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdSpawnList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdActorList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x4 */ void* segment;
} SCmdActorList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdCsCameraList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdCsCameraList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdColHeader;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdColHeader; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdRoomList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x4 */ void* segment;
} SCmdRoomList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ UNK_TYPE1 pad2[2];
/* 0x04 */ s8 west;
/* 0x05 */ s8 vertical;
/* 0x06 */ s8 south;
/* 0x07 */ u8 clothIntensity;
} SCmdWindSettings;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[2];
/* 0x4 */ s8 west;
/* 0x5 */ s8 vertical;
/* 0x6 */ s8 south;
/* 0x7 */ u8 clothIntensity;
} SCmdWindSettings; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdEntranceList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdEntranceList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 cUpElfMsgNum;
/* 0x04 */ u32 subKeepIndex;
} SCmdSpecialFiles;
/* 0x0 */ u8 code;
/* 0x1 */ u8 cUpElfMsgNum;
/* 0x4 */ u32 subKeepIndex;
} SCmdSpecialFiles; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 gpFlag1;
/* 0x04 */ u32 gpFlag2;
} SCmdRoomBehavior;
/* 0x0 */ u8 code;
/* 0x1 */ u8 gpFlag1;
/* 0x4 */ u32 gpFlag2;
} SCmdRoomBehavior; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdMesh;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdMesh; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdObjectList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x4 */ void* segment;
} SCmdObjectList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdLightList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x4 */ void* segment;
} SCmdLightList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdPathList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdPathList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdTransiActorList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x4 */ void* segment;
} SCmdTransiActorList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdLightSettingList;
// Cloudmodding has this as Environment Settings
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x4 */ void* segment;
} SCmdLightSettingList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ UNK_TYPE1 pad2[2];
/* 0x04 */ u8 hour;
/* 0x05 */ u8 min;
/* 0x06 */ u8 unk6;
} SCmdTimeSettings;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[2];
/* 0x4 */ u8 hour;
/* 0x5 */ u8 min;
/* 0x6 */ u8 unk6;
} SCmdTimeSettings; // size = 0x7
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ UNK_TYPE1 pad2[2];
/* 0x04 */ u8 skyboxId;
/* 0x05 */ u8 unk5;
/* 0x06 */ u8 unk6;
} SCmdSkyboxSettings;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[2];
/* 0x4 */ u8 skyboxId;
/* 0x5 */ u8 unk5;
/* 0x6 */ u8 unk6;
} SCmdSkyboxSettings; // size = 0x7
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ UNK_TYPE1 pad2[2];
/* 0x04 */ u8 unk4;
/* 0x05 */ u8 unk5;
} SCmdSkyboxDisables;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[2];
/* 0x4 */ u8 unk4;
/* 0x5 */ u8 unk5;
} SCmdSkyboxDisables; // size = 0x6
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdExitList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdExitList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ u32 data2;
} SCmdEndMarker;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ u32 data2;
} SCmdEndMarker; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 bgmId;
/* 0x02 */ UNK_TYPE1 pad2[4];
/* 0x06 */ u8 nighttimeSFX;
/* 0x07 */ u8 musicSeq;
} SCmdSoundSettings;
/* 0x0 */ u8 code;
/* 0x1 */ u8 bgmId;
/* 0x2 */ UNK_TYPE1 pad2[4];
/* 0x6 */ u8 nighttimeSFX;
/* 0x7 */ u8 musicSeq;
} SCmdSoundSettings; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ UNK_TYPE1 pad2[5];
/* 0x07 */ u8 echo;
} SCmdEchoSettings;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x2 */ UNK_TYPE1 pad2[5];
/* 0x7 */ u8 echo;
} SCmdEchoSettings; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdCutsceneData;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdCutsceneData; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 cameraMovement;
/* 0x04 */ u32 area;
} SCmdMiscSettings;
/* 0x0 */ u8 code;
/* 0x1 */ u8 cameraMovement;
/* 0x4 */ u32 area;
} SCmdMiscSettings; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdAltHeaders;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdAltHeaders; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ u32 data2;
} SCmdWorldMapVisited;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ u32 data2;
} SCmdWorldMapVisited; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdTextureAnimations;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdTextureAnimations; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdCutsceneActorList;
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x4 */ void* segment;
} SCmdCutsceneActorList; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdMinimapSettings;
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdMinimapSettings; // size = 0x8
typedef struct {
/* 0x00 */ u8 code;
/* 0x01 */ u8 num;
/* 0x04 */ void* segment;
} SCmdMinimapChests;
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x4 */ void* segment;
} SCmdMinimapChests; // size = 0x8
typedef struct {
/* 0x0 */ Gfx* opaqueDl;
@ -292,17 +291,17 @@ typedef struct {
struct {
s8 room; // Room to switch to
s8 bgCamDataId; // How the camera reacts during the transition. -2 for spiral staircase. -1 for generic door. 0+ will index scene CamData
} /* 0x00 */ sides[2]; // 0 = front, 1 = back
/* 0x04 */ s16 id;
/* 0x06 */ Vec3s pos;
/* 0x0C */ s16 rotY;
/* 0x0E */ u16 params;
} /* 0x0 */ sides[2]; // 0 = front, 1 = back
/* 0x4 */ s16 id;
/* 0x6 */ Vec3s pos;
/* 0xC */ s16 rotY;
/* 0xE */ u16 params;
} TransitionActorEntry; // size = 0x10
typedef struct {
/* 0x00 */ u8 numTransitionActors;
/* 0x04 */ TransitionActorEntry* transitionActorList;
} DoorContext;
/* 0x0 */ u8 numTransitionActors;
/* 0x4 */ TransitionActorEntry* transitionActorList;
} DoorContext; // size = 0x8
typedef struct {
/* 0x0 */ s16 id;
@ -343,7 +342,7 @@ typedef struct {
/* 0xA */ u8 unk_A;
/* 0xB */ u8 drawConfig;
/* 0xC */ u8 unk_C;
} SceneTableEntry; // size = 0x10;
} SceneTableEntry; // size = 0x10
typedef struct {
/* 0x0 */ u8 r;
@ -392,101 +391,102 @@ typedef struct {
} ObjectContext; // size = 0x958
typedef struct {
u8 headerType;
} MeshHeaderBase;
/* 0x0 */ u8 headerType;
} MeshHeaderBase; // size = 0x1
typedef struct {
MeshHeaderBase base;
u8 numEntries;
u32 dListStart;
u32 dListEnd;
} MeshHeader0;
/* 0x0 */ MeshHeaderBase base;
/* 0x1 */ u8 numEntries;
/* 0x4 */ u32 dListStart;
/* 0x8 */ u32 dListEnd;
} MeshHeader0; // size = 0xC
typedef struct {
u32 opaqueDList;
u32 translucentDList;
} MeshEntry0;
/* 0x0 */ u32 opaqueDList;
/* 0x4 */ u32 translucentDList;
} MeshEntry0; // size = 0x8
typedef struct {
MeshHeaderBase base;
u8 format;
u32 entryRecord;
} MeshHeader1Base;
/* 0x0 */ MeshHeaderBase base;
/* 0x1 */ u8 format;
/* 0x4 */ u32 entryRecord;
} MeshHeader1Base; // size = 0x8
typedef struct {
MeshHeader1Base base;
u32 imagePtr; // 0x08
u32 unknown; // 0x0C
u32 unknown2; // 0x10
u16 bgWidth; // 0x14
u16 bgHeight; // 0x16
u8 imageFormat; // 0x18
u8 imageSize; // 0x19
u16 imagePal; // 0x1A
u16 imageFlip; // 0x1C
} MeshHeader1Single;
/* 0x00 */ MeshHeader1Base base;
/* 0x08 */ u32 imagePtr;
/* 0x0C */ u32 unknown;
/* 0x10 */ u32 unknown2;
/* 0x14 */ u16 bgWidth;
/* 0x16 */ u16 bgHeight;
/* 0x18 */ u8 imageFormat;
/* 0x19 */ u8 imageSize;
/* 0x1A */ u16 imagePal;
/* 0x1C */ u16 imageFlip;
} MeshHeader1Single; // size = 0x20
typedef struct {
MeshHeader1Base base;
u8 bgCnt;
u32 bgRecordPtr;
} MeshHeader1Multi;
/* 0x0 */ MeshHeader1Base base;
/* 0x8 */ u8 bgCnt;
/* 0xC */ u32 bgRecordPtr;
} MeshHeader1Multi; // size = 0x10
typedef struct {
u16 unknown; // 0x00
s8 bgID; // 0x02
u32 imagePtr; // 0x04
u32 unknown2; // 0x08
u32 unknown3; // 0x0C
u16 bgWidth; // 0x10
u16 bgHeight; // 0x12
u8 imageFmt; // 0x14
u8 imageSize; // 0x15
u16 imagePal; // 0x16
u16 imageFlip; // 0x18
} BackgroundRecord;
/* 0x00 */ u16 unknown;
/* 0x02 */ s8 bgID;
/* 0x04 */ u32 imagePtr;
/* 0x08 */ u32 unknown2;
/* 0x0C */ u32 unknown3;
/* 0x10 */ u16 bgWidth;
/* 0x12 */ u16 bgHeight;
/* 0x14 */ u8 imageFmt;
/* 0x15 */ u8 imageSize;
/* 0x16 */ u16 imagePal;
/* 0x18 */ u16 imageFlip;
} BackgroundRecord; // size = 0x1C
typedef struct {
s16 playerXMax, playerZMax;
s16 playerXMin, playerZMin;
u32 opaqueDList;
u32 translucentDList;
} MeshEntry2;
/* 0x0 */ s16 playerXMax;
/* 0x2 */ s16 playerZMax;
/* 0x4 */ s16 playerXMin;
/* 0x6 */ s16 playerZMin;
/* 0x8 */ u32 opaqueDList;
/* 0xC */ u32 translucentDList;
} MeshEntry2; // size = 0x10
typedef struct {
MeshHeaderBase base;
u8 numEntries;
u32 dListStart;
u32 dListEnd;
} MeshHeader2;
/* 0x0 */ MeshHeaderBase base;
/* 0x1 */ u8 numEntries;
/* 0x4 */ u32 dListStart;
/* 0x8 */ u32 dListEnd;
} MeshHeader2; // size = 0xC
typedef struct {
/* 0x00 */ u8 count; // number of points in the path
/* 0x01 */ u8 unk1;
/* 0x02 */ s16 unk2;
/* 0x04 */ Vec3s* points; // Segment Address to the array of points
/* 0x0 */ u8 count; // number of points in the path
/* 0x1 */ u8 unk1;
/* 0x2 */ s16 unk2;
/* 0x4 */ Vec3s* points; // Segment Address to the array of points
} Path; // size = 0x8
typedef struct {
/* 0x00 */ UNK_TYPE2 unk0;
/* 0x02 */ UNK_TYPE2 unk2;
/* 0x04 */ UNK_TYPE2 unk4;
/* 0x06 */ UNK_TYPE2 unk6;
/* 0x08 */ UNK_TYPE2 unk8;
/* 0x0 */ UNK_TYPE2 unk0;
/* 0x2 */ UNK_TYPE2 unk2;
/* 0x4 */ UNK_TYPE2 unk4;
/* 0x6 */ UNK_TYPE2 unk6;
/* 0x8 */ UNK_TYPE2 unk8;
} MinimapEntry; // size = 0xA
typedef struct {
/* 0x00 */ MinimapEntry* entry;
/* 0x04 */ UNK_TYPE unk4;
/* 0x0 */ MinimapEntry* entry;
/* 0x4 */ UNK_TYPE unk4;
} MinimapList; // size = 0x8
typedef struct {
/* 0x00 */ UNK_TYPE2 unk0;
/* 0x02 */ UNK_TYPE2 unk2;
/* 0x04 */ UNK_TYPE2 unk4;
/* 0x06 */ UNK_TYPE2 unk6;
/* 0x08 */ UNK_TYPE2 unk8;
/* 0x0 */ UNK_TYPE2 unk0;
/* 0x2 */ UNK_TYPE2 unk2;
/* 0x4 */ UNK_TYPE2 unk4;
/* 0x6 */ UNK_TYPE2 unk6;
/* 0x8 */ UNK_TYPE2 unk8;
} MinimapChest; // size = 0xA
// TODO: consider merging with bgCamInfo?

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 {

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);

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;