This commit is contained in:
21aslade
2020-11-07 15:22:02 -07:00
432 changed files with 78818 additions and 59951 deletions
+1
View File
@@ -8,6 +8,7 @@ typedef struct {
u8 areaMetadata;
u8 locationIndex;
u8 unk;
u8 regret;
u16 localFlagOffset;
u8 filler[10];
u16 field_0x10;
+2
View File
@@ -110,4 +110,6 @@ extern void Enemy66(Entity*);
extern u32 GetNextFunction(Entity*);
extern void EnemyFunctionHandler(Entity*, void (*const func[])(Entity*));
extern void sub_0804AA30(Entity*, void (*const func[])(Entity*));
extern void sub_08001324(Entity*);
#endif
+45 -25
View File
@@ -19,10 +19,7 @@ typedef struct {
} EntityType;
typedef struct {
u8 unknown[6];
u8 field_0x6;
u8 field_0x7;
u8 unknown2[4];
u8 unknown[8];
} BoundingBox;
typedef struct Entity {
@@ -44,12 +41,12 @@ typedef struct Entity {
/*0x18*/ union {
/* */ u8 raw;
/* */ struct {
/* */ u8 draw : 2; // 1-2
/* */ u8 ss2 : 1; // 4
/* */ u8 ss3 : 1; // 8
/* */ u8 shadow : 2; //0x10-0x20
/* */ u8 flipX : 1; //0x40
/* */ u8 flipY : 1; //0x80
/* */ u32 draw : 2; // 1-2
/* */ u32 ss2 : 1; // 4
/* */ u32 ss3 : 1; // 8
/* */ u32 shadow : 2; //0x10-0x20
/* */ u32 flipX : 1; //0x40
/* */ u32 flipY : 1; //0x80
/* */ } PACKED b;
/* */ } PACKED spriteSettings;
/*0x19*/ struct {
@@ -100,12 +97,9 @@ typedef struct Entity {
/*0x43*/ u8 field_0x43;
/*0x44*/ u8 field_0x44;
/*0x45*/ u8 currentHealth;
/*0x46*/ s16 field_0x46;
/*0x46*/ u16 field_0x46;
/*0x48*/ BoundingBox* boundingBox;
/*0x4c*/ u8 field_0x4c;
/*0x4d*/ u8 field_0x4d;
/*0x4e*/ u8 field_0x4e;
/*0x4f*/ u8 field_0x4f;
/*0x4c*/ struct Entity* field_0x4c;
/*0x50*/ struct Entity* parent;
/*0x54*/ struct Entity* attachedEntity;
/*0x58*/ u8 animIndex;
@@ -123,12 +117,12 @@ typedef struct Entity {
/*0x5c*/ Frame* animPtr;
/*0x60*/ u16 spriteVramOffset;
/*0x62*/ u8 spriteOffsetX;
/*0x63*/ u8 spriteOffsetY;
/*0x63*/ s8 spriteOffsetY;
/*0x64*/ u32* otherEntity;
/*0x68*/ union SplitHWord field_0x68;
/*0x6a*/ union SplitHWord field_0x6a;
/*0x6c*/ union SplitHWord field_0x6c;
/*0x6e*/ u8 filler4[2];
/*0x6e*/ union SplitHWord field_0x6e;
/*0x70*/ union SplitWord field_0x70;
/*0x74*/ union SplitHWord field_0x74;
/*0x76*/ union SplitHWord field_0x76;
@@ -138,16 +132,18 @@ typedef struct Entity {
/*0x80*/ union SplitHWord field_0x80;
/*0x82*/ union SplitHWord field_0x82;
/*0x84*/ union SplitHWord cutsceneBeh;
/*0x86*/ u16 field_0x86;
/*0x86*/ union SplitHWord field_0x86;
} Entity;
#define COORD_TO_TILE(entity) \
((((entity->x.HALF.HI - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \
(((entity->y.HALF.HI - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6)
#define TILE(x, y) \
((((x - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \
(((y - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6)
#define COORD_TO_TILE_OFFSET(entity, xOff, yOff) \
((((entity->x.HALF.HI - xOff - gRoomControls.roomOriginX) >> 4) & 0x3fU) | \
(((entity->y.HALF.HI - yOff - gRoomControls.roomOriginY) >> 4) & 0x3fU) << 6)
#define COORD_TO_TILE(entity) \
TILE(entity->x.HALF.HI, entity->y.HALF.HI)
#define COORD_TO_TILE_OFFSET(entity, xOff, yOff) \
TILE(entity->x.HALF.HI - xOff, entity->y.HALF.HI - yOff)
extern Entity* CreateEnemy(u32 subtype, u32 form);
extern Entity* CreateObject(u32 subtype, u32 form, u32 parameter);
@@ -167,7 +163,31 @@ extern void SetSpriteSubEntryOffsetData2(Entity*, u32, u32);
extern u32 GetFacingDirection(Entity*, Entity*);
extern void DeleteThisEntity();
extern void DeleteThisEntity(void);
extern void CopyPosition(Entity*, Entity*);
extern void DeleteEntity(Entity*);
extern void PositionRelative(Entity*, Entity*, s32, s32);
enum {
DirectionNorth = 0x00,
DirectionEast = 0x08,
DirectionSouth = 0x10,
DirectionWest = 0x18,
};
#define DirectionRound(expr) ((expr) & 0x18)
#define DirectionRoundUp(expr) DirectionRound((expr) + 4)
#define DirectionIsHorizontal(expr) ((expr) & 0x08)
#define DirectionIsVertical(expr) ((expr) & 0x10)
#define DirectionTurnAround(expr) (DirectionRoundUp(expr) ^ 0x10)
#define DirectionToAnimationState(expr) (DirectionRoundUp(expr) >> 3)
#define DirectionFromAnimationState(expr) (expr << 3)
#define Direction8Round(expr) ((expr) & 0x1c)
#define Direction8RoundUp(expr) Direction8Round((expr) + 2)
#define Direction8TurnAround(expr) (Direction8RoundUp(expr) ^ 0x10)
#define Direction8ToAnimationState(expr) (Direction8RoundUp(expr) >> 2)
#define Direction8FromAnimationState(expr) (expr << 2)
extern Entity gUnk_03003DA0;
+25 -11
View File
@@ -13,7 +13,7 @@
// Identified - to be sorted into header files
extern u32 Random(void);
extern void PlaySFX(u32);
extern void ShowNPCDialogue(Entity*, u32*);
extern void ShowNPCDialogue(Entity*, Dialog*);
extern u32 UpdateFuseInteraction();
extern void DeleteEntity(Entity*);
extern u32 __modsi3(u32, u32);
@@ -32,6 +32,7 @@ extern u32 GetFacingDirection(Entity*, Entity*);
extern Entity* CreatePlayerItem(u32, u32, u32, u32);
extern Entity* GetEmptyEntity(void);
extern u32 GetTileTypeByPos(s32 x, s32 y, u32 layer);
extern u32 GetTileType(u32 pos, u32 layer);
extern void _DmaZero(void* src, u32 count);
extern void EraseAllEntities(void);
extern void SetTile(u32, u32, u32);
@@ -44,14 +45,15 @@ extern u8* GetSpriteSubEntryOffsetDataPointer(u32, u32);
extern u32 LoadFixedGFX(Entity*, u32);
extern void ExecuteScriptCommandSet(Entity*, void *);
extern void _DmaFill32(u32, void*, u32);
extern Entity* CreateItemEntity(u32, u32, u32);
// Unidentified
extern void sub_0806ED78(Entity*);
extern u32 sub_0806ED78(Entity*);
extern void sub_0806920C(Entity*);
extern u32 sub_0805ACC0(Entity*);
extern u32 sub_0801E99C(Entity*);
extern void sub_0806924C(Entity*);
extern u32 sub_080AEF88(Entity*);
extern u32 ProcessMovement(Entity*);
extern Entity* sub_080873AC(Entity*, u32, u32);
extern void sub_08078778(Entity*);
extern void sub_080787A8(Entity*, u32);
@@ -60,7 +62,7 @@ extern void sub_080791D0();
extern void sub_0805EC9C();
extern void sub_0805EC60();
extern void sub_080873D0();
extern u8 sub_080045D4(s16, s16, u16, u16);
extern u8 sub_080045D4(s16, s16, u32, u32);
extern void sub_0806F69C(Entity*);
extern void sub_0805E3A0(void*, u32);
extern void sub_0806D0B0(Entity*);
@@ -78,7 +80,6 @@ extern s32 sub_0806ED9C(Entity*, u32, u32);
extern void sub_0807000C(Entity*);
extern void sub_0805E47C(Entity*);
extern void sub_0805E584(Entity*);
extern void sub_0806ED78(Entity*);
extern void sub_08068BEC(Entity*, u32);
extern void sub_08078778(Entity*);
extern s32 sub_0806ED9C(Entity*, u32, u32);
@@ -93,7 +94,7 @@ extern void sub_0805ED14(u32*);
extern void sub_080A7C18(u32, u32, u32);
extern void sub_08068BEC(Entity*, u32);
extern void sub_0804AA30(Entity*, void (*const funcs[])(Entity*));
extern void sub_0804A9FC(Entity*, u32);
extern Entity* sub_0804A9FC(Entity*, u32);
extern void sub_0804A720(Entity*);
extern u32 sub_080AEFE0(Entity*);
extern u32 sub_08049FA0(Entity*);
@@ -103,7 +104,7 @@ extern u32 sub_08049EE4(Entity*);
extern Entity *sub_0804A98C(Entity *, u8, u8);
extern u32 sub_080544DC(u8);
extern void sub_08077E54(Entity*);
extern void sub_080042BA(Entity*);
extern void sub_080042BA(Entity*, u32);
extern void _DmaZero(void*, u32);
extern void sub_08077F24(ItemBehavior*, u32);
extern void sub_08079184();
@@ -138,7 +139,7 @@ extern void sub_0804C2F0(void);
extern void sub_0801AFE4(void);
extern u32 sub_08060354(void);
extern void sub_08057E64(void);
extern void LoadAssetAsync(void*, u32, u32);
extern void LoadAssetAsync(const void*, u32, u32);
extern void LoadPaletteGroup(u32);
extern void sub_0809F814(u32);
extern void sub_080300E8(void);
@@ -187,15 +188,17 @@ extern void sub_080A4398(void);
extern void sub_0801E738(u32);
extern void sub_080A70AC(const void*);
extern void sub_080A7114(u32);
extern void sub_08001324(Entity*);
extern void sub_08001242(Entity*);
extern u32 sub_08003FC4(Entity*, u32);
extern u32 sub_080043E8(Entity*);
extern void sub_08001290(Entity*, u32);
extern void sub_08004488(u32);
extern void EnqueueSFX(u32);
extern void sub_08004596(Entity*, u32);
extern u32 sub_080045B4(Entity*, u32, u32);
extern u32 sub_0807953C(void);
extern void ResetPlayer(void);
extern void sub_080A29BC(Entity*);
extern void CreateDust(Entity*);
extern void sub_080AE068(Entity*);
extern Manager* GetEmptyManager(void);
extern void AppendEntityToList(void*, u32);
@@ -219,7 +222,7 @@ extern u32 sub_0807CF88(u32, u8*);
extern u32 sub_0807D008(u32, void*);
extern void sub_0807D184(u32, char*);
extern u32 sub_0806F520();
extern void sub_0806F4E8();
extern void sub_0806F4E8(Entity*);
extern u32 sub_0806F3E4(Entity*);
extern void sub_0804A7D4(Entity*);
extern void sub_08033744(Entity*);
@@ -255,4 +258,15 @@ extern u32 sub_080044EC(Entity*, u32);
extern u32 sub_080002B8(Entity*);
extern u32 sub_08049F84(Entity*, u32);
extern void sub_0802F45C(Entity*);
extern u32 sub_0800419C(Entity*, Entity*, u32, u32);
extern void sub_08004542(Entity*);
extern void sub_08077B20();
extern u32 sub_080040A8(Entity*);
extern u32 sub_08017850(Entity*);
extern void sub_080809D4(void);
extern void sub_08080CB4(Entity*);
extern u32 GetTileTypeByEntity(Entity*);
extern u32 sub_0800442E(Entity*);
extern void sub_08081404(Entity*, u32);
extern void sub_0807B7D8(u32, u32, u32);
#endif
+3
View File
@@ -59,6 +59,9 @@ union SplitWord {
struct {
s16 LO, HI;
} HALF;
struct {
u16 LO, HI;
} HALF_U;
struct {
u8 byte0, byte1, byte2, byte3;
} BYTES;
-4
View File
@@ -15,13 +15,9 @@ extern void sub_0805EC9C();
extern void sub_0805EC60();
extern void sub_080873D0();
extern void DeleteEntity();
extern u32 sub_080045D4();
extern void sub_0806F69C();
extern u32 Random();
extern void sub_0805E3A0(Entity*, u32);
extern Entity* FindEntityInListBySubtype(u32, u32, u32);
extern void sub_080791D0();
extern u32 FindEntityInListByForm(u32, u32, u32, u32, u32);
extern void (*const GreatFairy_Main[])(Entity*);
extern void (*const GreatFairy_Behaviors[])(Entity*);
extern void (*const GreatFairy_WingsBehaviors[])(Entity*);
-84
View File
@@ -1,84 +0,0 @@
#ifndef LAKITU_H
#define LAKITU_H
// Lakitu
extern void EnemyFunctionHandler(Entity *, void (*const funcs[])(Entity*));
extern void SetChildOffset(Entity *, s32, s32, s32);
// sub_0803C784
extern void sub_0804A9FC(Entity *, u32);
extern void sub_0804AA30(Entity *, void (*const funcs[])(Entity *));
// sub_0803C820
extern u32 sub_0806F520(Entity *);
// sub_0803C850
extern void sub_0806F4E8(Entity *);
// Lakitu_Initialize
extern void sub_0804A720(Entity *);
// Lakitu_Cloudless
extern u32 sub_08003FC4(Entity *, u32);
// sub_0803CA4C
extern u32 sub_080041A0(Entity *, Entity *, u32, u32);
// sub_0803CAD0
extern u8 sub_080045D4(s16, s16, u16, u16);
extern u32 sub_080AEFE0(Entity *);
// Lakitu_SpawnLightning
void PositionRelative(Entity*, Entity*, s32, s32);
extern void sub_08004488(u32);
// sub_0803CC08
extern void DeleteEntity(Entity *);
// Part of function tables
extern void sub_08001324(Entity *);
extern void sub_0804A7D4(Entity *);
extern void sub_08001242(Entity *);
// Used in multiple functions
extern Entity *CreateFx(Entity*, u32, u32);
extern Entity *sub_0804A98C(Entity *positionEntity, u8 subtype, u8 form); // Creates a projectile positioned at the given entity
extern void UpdateAnimationSingleFrame(Entity *);
extern void InitAnimationForceUpdate(Entity *, u32);
extern u32 sub_0806FCB8(Entity *, u32, u32, u32);
extern u32 sub_080045C4(Entity *, Entity *);
// Forward references to functions in lakitu.c
extern void sub_0803CAD0(Entity *);
extern void sub_0803CBAC(Entity *);
extern void sub_0803CA84(Entity *, u32);
extern bool32 sub_0803CA4C(Entity *);
extern bool32 sub_0803CB04(Entity *);
extern void Lakitu_SpawnLightning(Entity *);
extern void sub_0803CB34(Entity *);
extern void sub_0803CC08(Entity *this);
enum {
INIT,
HIDDEN,
END_HIDE,
IDLE,
BEGIN_HIDE,
LIGHTNING_THROW,
LIGHTNING_DELAY,
CLOUDLESS,
};
extern void (*const gUnk_080D0110[])(Entity *);
extern void (*const LakituActionFuncs[])(Entity *);
extern void (*const gUnk_080D0148[])(Entity *);
typedef struct {
s8 x;
s8 y;
} PACKED OffsetCoords;
extern const OffsetCoords gUnk_080D0154[];
#endif // LAKITU_H
+2 -1
View File
@@ -22,7 +22,8 @@ typedef struct Manager {
/*0x0d*/ u8 unk_0d;
/*0x0e*/ u8 unk_0e;
/*0x0f*/ u8 unk_0f;
/*0x10*/ u8 unk_10[0x4];
/*0x10*/ u8 unk_10;
/*0x11*/ u8 unk_11[3];
/*0x14*/ struct Manager * parent;
/*0x18*/ u8 unk_18[0x8];
// union SplitHWord unk_20;
+1 -1
View File
@@ -28,7 +28,7 @@ typedef struct {
u8 storyPanelIndex;
u16 transitionTimer;
u16 field_0xa;
u8 field_0xc[0x4];
u8* field_0xc;
u8 unk10[2];
u8 field_0x12;
u8 unk13;
-1
View File
@@ -171,7 +171,6 @@ extern void NPC58(Entity*);
extern void NPC58_Head(Entity*);
extern u32 UpdateFuseInteraction(Entity*);
extern void ShowNPCDialogue(Entity*, u32*);
#endif
+13 -5
View File
@@ -33,26 +33,32 @@ typedef struct {
/*0x30*/ union {
/* */ u32 all;
/* */ struct {
/* */ u32 filler9 : 3;
/* */ u32 filler9 : 2;
/* */ u32 unk2 : 1;
/* */ u32 noMinishCap : 1;
/* */ u32 pullingState : 1;
/* */ u32 windyState : 1;
/* */ u32 filler6 : 1;
/* */ u32 unk7 : 1;
/* */ u32 filler8 : 2;
/* */ u32 unk8 : 1;
/* */ u32 unk9 : 1;
/* */ u32 slipperyState : 1;
/* */ u32 filler11 : 5;
/* */ u32 filler11b : 16;
/* */ } PACKED b;
/* */ } flags;
/*0x34*/ u8 field_0x34[6];
/*0x34*/ u8 field_0x34[4];
/*0x38*/ u8 field_0x38;
/*0x39*/ u8 field_0x39;
/*0x3a*/ u16 field_0x3a;
/*0x3c*/ u8 field_0x3c[2];
/*0x3e*/ u8 swordGoldParticle : 1;
/* */ u8 swordBlueParticle : 1;
/* */ u8 filler14 : 6;
/*0x3f*/ u8 field_0x3f;
/*0x40*/ u8 field_0x40[75];
/*0x40*/ u8 field_0x40[64];
/*0x80*/ u16 field_0x80;
/*0x82*/ u8 field_0x82[9];
/*0x8b*/ u8 field_0x8b;
/*0x8c*/ u32 field_0x8c;
/*0x90*/ union SplitWord field_0x90;
@@ -61,7 +67,8 @@ typedef struct {
/*0xa9*/ u8 field_0xa9;
/*0xaa*/ u8 field_0xaa;
/*0xab*/ u8 field_0xab;
/*0xac*/ u32 field_0xac;
/*0xac*/ u16 field_0xac;
/*0xae*/ u16 field_0xae;
} PlayerState;
@@ -99,6 +106,7 @@ typedef struct {
} ItemBehavior;
extern u8 gBombBagSizes[];
extern u8 gQuiverSizes[];
extern PlayerState gPlayerState;
extern Stats gStats;
+29 -23
View File
@@ -12,36 +12,42 @@ typedef struct {
*/
typedef struct {
u16 unk2;
u8 unk3;
u8 unk4;
u8 areaID;
u8 roomID;
u16 roomOriginX;
u16 roomOriginY;
s16 roomScrollX;
s16 roomScrollY;
u8 unk5;
u8 unk6;
u8 filler[4];
u8 screenShakeMagnitude;
u8 unk7;
u16 screenShakeTime;
u16 filler2[6];
u8 filler3[4];
union SplitWord bg3OffsetX;
union SplitWord bg3OffsetY;
Entity* cameraTarget;
/*0x00*/ u16 unk2;
/*0x02*/ u8 unk3;
/*0x03*/ u8 unk4;
/*0x04*/ u8 areaID;
/*0x05*/ u8 roomID;
/*0x06*/ u16 roomOriginX;
/*0x08*/ u16 roomOriginY;
/*0x0A*/ s16 roomScrollX;
/*0x0C*/ s16 roomScrollY;
/*0x0E*/ u8 unk5;
/*0x0F*/ u8 unk6;
/*0x10*/ u8 filler[4];
/*0x14*/ u8 screenShakeMagnitude;
/*0x15*/ u8 unk7;
/*0x16*/ u16 screenShakeTime;
/*0x18*/ u16 filler2[3];
/*0x1E*/ u16 width;
/*0x20*/ u16 height;
/*0x22*/ u8 filler3[6];
/*0x28*/ union SplitWord bg3OffsetX;
/*0x2C*/ union SplitWord bg3OffsetY;
/*0x30*/ Entity* cameraTarget;
} RoomControls;
typedef struct {
u8 filler[6];
u8 filler[4];
u8 field_0x4;
u8 filler1[1];
u8 itemForSaleIndex;
u8 field_0x7;
u8 field_0x8;
u8 field_0x9;
u8 unk2;
u16 filler2[3];
u8 filler2[5];
u8 unk_10;
u8 filler6[3];
u32 roomFlags;
u32 unk3;
u8 filler4[48];
@@ -75,4 +81,4 @@ extern RoomVars gRoomVars;
extern void SetTileType(u32, u32, u32);
#endif
#endif
+5 -6
View File
@@ -21,8 +21,7 @@ typedef struct {
u16 bg1yOffset;
u16 bg2xOffset;
u16 bg2yOffset;
u16 bg3xOffset;
u16 bg3yOffset;
void* unk_14;
} BgSettings;
typedef struct {
@@ -33,10 +32,10 @@ typedef struct {
u16 unk2;
u16 unk3;
u16 bg3Control;
u16 bg3xOffset;
u16 bg3yOffset;
s16 bg3xOffset;
s16 bg3yOffset;
u16 unk4;
u32 unk5;
void* unk5;
} BgAffSettings;
typedef struct {
@@ -78,4 +77,4 @@ typedef struct {
extern BgControls gBgControls;
extern Screen gScreen;
#endif
#endif
+17 -3
View File
@@ -23,7 +23,7 @@ typedef struct {
} struct_0807D1C4;
#define gUnk_02000000 ((struct_02000000*)(0x2000000))
//extern struct_02000000 gUnk_02000000;
// extern struct_02000000 gUnk_02000000;
typedef struct {
u8 filler0[0x4];
@@ -57,7 +57,7 @@ typedef struct {
extern SaveFile gUnk_02002A40;
typedef struct {
u32 frameCount; // regular frame count? does anything reset it?
u32 frameCount; // regular frame count? does anything reset it?
u8 field_0x4[0x4];
bool8 transitioningOut;
u8 transitionType; // transition when changing areas
@@ -123,7 +123,7 @@ typedef struct {
u8 field_0x2;
u8 field_0x3;
u32 field_0x4;
u16 fadeType; // fade in or out, are there others?
u16 fadeType; // fade in or out, are there others?
u16 fadeSpeed; // subtracted from duration
u16 fadeDuration;
u16 field_0xe;
@@ -160,4 +160,18 @@ typedef struct {
} struct_02034480;
extern struct_02034480 gUnk_02034480;
typedef struct {
u32 flag : 12;
u32 flagType : 4;
u32 type : 4;
u32 unk : 1;
union {
struct {
u16 a;
u16 b;
} indices;
void (*func)(Entity*);
} data;
} Dialog;
#endif