summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorHenny022p <info@henny022.de>2022-03-23 22:43:39 +0100
committerHenny022p <info@henny022.de>2022-03-23 22:43:39 +0100
commit92cdc57ecda7b86e18b795e83f225c850fb41392 (patch)
tree64d22e0021dbdc55e0bfd7384a46dd28d98dd9c4 /include
parenteb5d9a67264dcf22488a8b66b060517ee2cb7ad0 (diff)
parentfc3dc169519bc30da79d89ac9afaff7ca71b8eed (diff)
Merge branch 'master' into transitions
Diffstat (limited to 'include')
-rw-r--r--include/coord.h7
-rw-r--r--include/entity.h7
-rw-r--r--include/fileselect.h36
-rw-r--r--include/functions.h29
-rw-r--r--include/manager.h2
-rw-r--r--include/message.h9
-rw-r--r--include/object.h2
-rw-r--r--include/player.h6
-rw-r--r--include/room.h21
-rw-r--r--include/structures.h28
10 files changed, 93 insertions, 54 deletions
diff --git a/include/coord.h b/include/coord.h
index 31453184..b8af7117 100644
--- a/include/coord.h
+++ b/include/coord.h
@@ -7,13 +7,16 @@
s16 FixedMul(s16 r0, s16 r1);
s16 FixedDiv(s16 r0, s16 r1);
+void* AllocMutableHitbox(Entity*);
+void UnloadHitbox(Entity*);
+
void CopyPosition(Entity*, Entity*);
void PositionEntityOnTop(Entity*, Entity*);
void PositionRelative(Entity*, Entity*, s32, s32);
void CopyPositionAndSpriteOffset(Entity* param_1, Entity* param_2);
void sub_0806FA90(Entity*, Entity*, s32, s32);
-void SortEntityAbove(Entity*, Entity*);
-void SortEntityBelow(Entity*, Entity*);
+void SortEntityAbove(Entity* below_ent, Entity* above_ent);
+void SortEntityBelow(Entity* above_ent, Entity* below_ent);
u32 sub_0806F5A4(u32 idx);
bool32 sub_0806F3E4(Entity*);
diff --git a/include/entity.h b/include/entity.h
index 4b25be09..4f2cc3ca 100644
--- a/include/entity.h
+++ b/include/entity.h
@@ -106,7 +106,7 @@ typedef struct {
} Hitbox3D;
typedef struct {
- u8 b0 : 3; // 1-4
+ u8 b0 : 3; // 1-4 /**< set to is 4 in entity init (default/lowest?)
u8 b1 : 3; // 8
u8 b2 : 1; // 0x40
u8 b3 : 1; // 0x80
@@ -504,6 +504,8 @@ extern u8 gManagerCount;
#define COLLISION_OFF(entity) ((entity)->flags &= ~ENT_COLLIDE)
#define COLLISION_ON(entity) ((entity)->flags |= ENT_COLLIDE)
+#define ANIM_DONE (1 << 7) /* invalid frame index */
+
/** @name Tile Macros */ /// @{
#define TILE(x, y) (((((x)-gRoomControls.origin_x) >> 4) & 0x3F) | ((((y)-gRoomControls.origin_y) >> 4) & 0x3F) << 6)
#define TILE_POS(x, y) (x + (y << 6))
@@ -512,7 +514,8 @@ extern u8 gManagerCount;
/// @}
/** @name Animation State Macros */ ///@{
-#define AnimationStateTurnAround(expr) ((expr) ^ 0x4)
+#define AnimationStateFlip90(expr) ((expr) ^ 0x2)
+#define AnimationStateFlip180(expr) ((expr) ^ 0x4)
#define AnimationStateIdle(expr) ((expr)&0x6)
#define AnimationStateWalk(expr) ((expr)&0xe)
///@}
diff --git a/include/fileselect.h b/include/fileselect.h
index 31d75ea5..066e3e88 100644
--- a/include/fileselect.h
+++ b/include/fileselect.h
@@ -23,21 +23,16 @@ static_assert(sizeof(ChooseFileState) == 0x30);
// TODO: This occupies the same memory region as gMenu
extern ChooseFileState gChooseFileState;
-typedef struct {
- u8 filler0[0x1];
- u8 unk1;
- u8 charColor;
- u8 bgColor;
- u16 unk4;
- u16 unk6;
- u8* unk8;
-} struct_02036540;
-
-typedef struct {
- u8 filler0[0x10];
- u16 unk10;
- u8 filler12[0x6];
-} struct_080FC844;
+// typedef struct {
+// u8 unk00 : 4;
+// u8 unk04 : 4;
+// u8 unk1;
+// u8 charColor;
+// u8 bgColor;
+// u16 unk4;
+// u16 unk6;
+// u8* unk8;
+// } struct_02036540;
extern struct_020227E8 gUnk_020227E8[];
@@ -57,18 +52,19 @@ extern struct_02019EE0 gMapDataBottomSpecial;
// TODO size: 0x8000 from ClearTilemaps?
extern void sub_08056FEC(u32, struct_020227E8*);
-extern void sub_0805F46C(u32, void*);
+extern u32 sub_0805F46C(u32, Font*);
extern void RecoverUI(u32 bottomPt, u32 topPt);
extern void ClearTilemaps(void);
extern void sub_0805194C(u32);
-extern struct_02036540* sub_0805F2C8(void);
-extern void sub_0805F7DC(u32, struct_02036540*);
-extern void sub_0805F300(struct_02036540*);
+extern WStruct* sub_0805F2C8(void);
+extern u32 sub_0805F7DC(u32, WStruct*);
+extern void sub_0805F300(WStruct*);
extern void sub_08050A64(u32);
extern void sub_08050AFC(u32);
extern void sub_08050384();
+extern void CreateDialogBox(u32, u32);
-extern const struct_080FC844 gUnk_080FC844;
+extern const Font gUnk_080FC844;
extern const u16 gUnk_080FC85C[][3];
extern void (*const gUnk_080FC908[])(void);
extern const u8 gGlobalGfxAndPalettes[];
diff --git a/include/functions.h b/include/functions.h
index b4e79f4d..59505428 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -24,7 +24,7 @@ extern void CreateItemOnGround(Entity*);
extern Entity* CreateLargeWaterTrace(Entity*);
extern void CreateMagicSparkles(u32, u32, u32);
extern void CreateMinishEntrance(u32 tile);
-extern Entity* CreatePlayerBomb(ItemBehavior*, u32);
+extern Entity* CreatePlayerItemWithParent(ItemBehavior*, u32);
extern u32 CreateRandomItemDrop(Entity*, u32);
extern void CreateSparkle(Entity*);
extern void DoPlayerAction(Entity*);
@@ -52,7 +52,7 @@ extern void LoadResources(void);
extern bool32 LoadSwapGFX(Entity*, u16, u32);
extern void MenuFadeIn(u32, u32);
extern void ModBombs(s32);
-extern u32 PlayerInRange(Entity*, u32, u32);
+extern bool32 PlayerInRange(Entity*, u32, s32);
extern bool32 ProcessMovement1(Entity*);
extern bool32 ProcessMovement12(Entity*);
extern bool32 ProcessMovement2(Entity*);
@@ -85,7 +85,7 @@ extern void sub_08000148(u32, u32, u32);
extern u32 sub_080B1A0C(Entity*, s32, s32);
extern u32 sub_080B1A48(u32, u32, u32);
extern u32 sub_080B1A8C(Entity*, u32, u32);
-extern u32 sub_080B1AA8(Entity*);
+extern u32 GetTileUnderEntity(Entity*);
extern u32 sub_080B1AE0(u16, u8);
extern u32 sub_080B1AF0(Entity*, s32, s32);
extern u32 sub_080B1B18(s32, s32, u32);
@@ -130,15 +130,16 @@ extern void sub_0803C0AC(Entity*);
extern void sub_08049CF4(Entity*);
extern Entity* sub_08049DF4(u32);
extern u32 sub_08049EE4(Entity*);
-extern u32 sub_08049F1C(Entity*, Entity*, u32);
-extern u32 sub_08049F84(Entity*, u32);
-extern u32 sub_08049FA0(Entity*);
-extern u32 sub_08049FDC(Entity*, u32);
+extern bool32 sub_08049F1C(Entity*, Entity*, s32);
+extern bool32 sub_08049F84(Entity*, s32);
+extern bool32 sub_08049FA0(Entity*);
+extern bool32 sub_08049FDC(Entity*, u32);
extern u32 sub_0804A024(Entity*, u32, u32);
extern u32 sub_0804A044(Entity*, Entity*, u32);
+extern void sub_0804A4E4(Entity*, Entity*);
extern void sub_0804A720(Entity*);
extern void sub_0804AA1C(Entity*);
-extern void sub_0804C128();
+extern void sub_0804C128(void);
extern u32 sub_080542AC(u32);
extern void sub_08054564();
extern void sub_08054570(void);
@@ -152,8 +153,8 @@ extern void sub_08059278(void);
extern void sub_0805B4D0(u32);
extern void sub_0805BC4C(void);
extern void sub_0805EC60(Entity*);
-extern void sub_0805EC9C(Entity*, u32, u32, u32);
-extern void sub_0805ED14(u32*);
+extern void SetAffineInfo(Entity*, u32, u32, u32);
+extern void InitPlayerMacro(u32*);
extern u32* sub_0805F25C(u32);
extern u32 sub_0805F7A0(u32);
extern void sub_0805F8E4(u32 r0, WStruct* r1);
@@ -163,7 +164,7 @@ extern void sub_08060158(Entity*);
extern void sub_0806D02C(Entity*);
extern void sub_0806D0B0(Entity*);
extern void sub_0806F4E8(Entity*);
-extern u32 sub_0806F520();
+extern bool32 sub_0806F520(Entity*);
extern u32 sub_0806F5B0(u32);
extern u32 sub_0806F824(Entity*, Entity*, s32, s32);
extern u32 sub_0806F948(Entity*);
@@ -182,7 +183,7 @@ extern void sub_08077D38(ItemBehavior*, u32);
extern void sub_08077DF4(ItemBehavior*, u32);
extern void sub_08077E3C(ItemBehavior*, u32);
extern void sub_08077E54(ItemBehavior*);
-extern void sub_08077E78(ItemBehavior*, u32);
+extern void DeletePlayerItem(ItemBehavior*, u32);
extern bool32 sub_08077EC8(ItemBehavior*);
extern bool32 sub_08077EFC(ItemBehavior*);
extern bool32 sub_08077F10(ItemBehavior*);
@@ -198,8 +199,8 @@ extern void sub_08078850(Entity*, u32, u32, void*);
extern s32 sub_0807887C(Entity*, u32, u32);
extern void sub_080788E0(Entity*);
extern s32 sub_08078904();
-extern void sub_08078930(Entity*);
-extern void sub_08078954(Entity*);
+extern void RegisterCarryEntity(Entity*);
+extern void FreeCarryEntity(Entity*);
extern void sub_08078AC0(u32, u32, u32);
extern void sub_08078B48(void);
extern void sub_08078E84(Entity*, Entity*);
diff --git a/include/manager.h b/include/manager.h
index 4835a712..131e9967 100644
--- a/include/manager.h
+++ b/include/manager.h
@@ -141,7 +141,7 @@ typedef struct {
DiggingCaveEntrance* unk_00;
u16 unk_04;
u16 unk_06;
- u8 unk_08;
+ u8 isDiggingCave;
u8 unk_09;
u8 unk_0a;
u8 unk_0b;
diff --git a/include/message.h b/include/message.h
index c0164810..4a450767 100644
--- a/include/message.h
+++ b/include/message.h
@@ -17,7 +17,7 @@ typedef struct {
u16 textIndex;
u16 unk2; // HI?
u32 field_0xc;
- u32 field_0x10;
+ u32 rupees;
u32 field_0x14;
u32 field_0x18;
u32 field_0x1c;
@@ -25,14 +25,17 @@ typedef struct {
extern Message gMessage;
typedef struct {
- u8 flags;
+ u8 unk00 : 1;
+ u8 unk01 : 4;
+ u8 unk05 : 2;
+ u8 unk06 : 1;
u8 code; // first byte read
u16 param; // second byte read
u16 extended; // ascii adjusted for jp chars
u16 _6;
u16 textIndex;
void* _c;
- u8 buf[32];
+ const u8* buf[8];
} Token;
typedef struct {
diff --git a/include/object.h b/include/object.h
index 5d6cb713..ef3d2d08 100644
--- a/include/object.h
+++ b/include/object.h
@@ -215,7 +215,7 @@ typedef enum {
OBJECT_B6,
WELL,
WIND_TRIBE_TELEPORTER,
- OBJECT_B9,
+ CUCCO_MINIGAME,
GYORG_BOSS_OBJECT,
WINDCREST,
LIT_AREA,
diff --git a/include/player.h b/include/player.h
index ba4d4de6..0776c0a5 100644
--- a/include/player.h
+++ b/include/player.h
@@ -109,7 +109,7 @@ enum PlayerFlags {
PL_FROZEN = 0x800,
PL_IN_MINECART = 0x1000,
PL_DRUGGED = 0x4000,
- PL_FLAGS8000 = 0x8000,
+ PL_PIT_IS_EXIT = 0x8000,
PL_FLAGS10000 = 0x10000,
PL_FLAGS20000 = 0x20000,
PL_ROLLING = 0x40000,
@@ -204,7 +204,7 @@ typedef struct {
/*0x02*/ u8 jump_status;
/*0x03*/ u8 field_0x3[2];
/*0x05*/ u8 heldObject;
- /*0x06*/ u8 pushedObject;
+ /*0x06*/ u8 pushedObject; // hi bit is special, rest is used as a timer
/*0x07*/ u8 field_0x7;
/*0x08*/ u16 animation;
/*0x0a*/ u8 field_0xa;
@@ -224,7 +224,7 @@ typedef struct {
/*0x1a*/ u8 mobility;
/*0x1b*/ u8 sword_state;
/*0x1c*/ u8 field_0x1c;
- /*0x1d*/ u8 field_0x1d;
+ /*0x1d*/ u8 gustJarSpeed;
/*0x1e*/ u8 dash_state;
/*0x1f*/ u8 field_0x1f[3];
/*0x22*/ u16 field_0x22[2];
diff --git a/include/room.h b/include/room.h
index 43ac8f40..3ab02772 100644
--- a/include/room.h
+++ b/include/room.h
@@ -83,6 +83,16 @@ typedef struct {
static_assert(sizeof(RoomVars) == 0xCC);
extern RoomVars gRoomVars;
+typedef struct {
+ u8 area;
+ u8 room;
+ u16 unk_02;
+ u32 unk_04;
+} RoomMemory;
+
+extern RoomMemory* gUnk_020354B0;
+extern RoomMemory gRoomMemory[];
+
// Packets used to store which entities to load in a room
typedef struct {
u8 kind;
@@ -96,10 +106,10 @@ typedef struct {
} EntityData;
typedef struct {
- u16 field_0x0;
+ u16 tilePos;
u16 field_0x2;
- u8 field_0x4;
- u8 field_0x5;
+ u8 room;
+ u8 animationState;
u8 field_0x6;
u8 field_0x7;
} struct_030010EC;
@@ -128,7 +138,7 @@ typedef struct {
/* 0x12 */ u16 dungeon_map_y;
/* 0x14 */ u16 overworld_map_x;
/* 0x16 */ u16 overworld_map_y;
- /* 0x18 */ u8 field_0x24[0x8];
+ /* 0x18 */ u8 field_0x24[8];
} PlayerRoomStatus;
static_assert(sizeof(PlayerRoomStatus) == 0x20);
@@ -140,7 +150,8 @@ typedef struct {
/* 0x09 */ u8 type; // transition when changing areas
/* 0x0a */ u16 stairs_idx; // seems to be a tile type
/* 0x0c */ PlayerRoomStatus player_status;
- /* 0x2c */ u8 field_0x2c[0x9];
+ /* 0x2c */ u8 entity_update_type; // differentiates entity priority on kinstone menu?
+ /* 0x2d */ u8 field_0x2c[0x8];
/* 0x35 */ u8 hint_height;
/* 0x36 */ u16 hint_idx;
/* 0x38 */ u8 field_0x38;
diff --git a/include/structures.h b/include/structures.h
index 12d15690..00e83b72 100644
--- a/include/structures.h
+++ b/include/structures.h
@@ -222,15 +222,19 @@ extern struct {
static_assert(sizeof(gUnk_02034490) == 0x18);
typedef struct {
- u8 unk0;
+ u8 unk00 : 1;
+ u8 unk01 : 3;
+ u8 unk04 : 4;
u8 unk1;
- u8 unk2;
- u8 unk3;
+ u8 charColor;
+ u8 bgColor;
u16 unk4;
u16 unk6;
void* unk8;
} WStruct;
+static_assert(sizeof(WStruct) == 12);
+
typedef struct {
u8 unk0;
u8 unk1;
@@ -296,4 +300,22 @@ typedef struct {
extern SpritePtr gSpritePtrs[];
+typedef struct {
+ u16* dest;
+ void* gfx_dest;
+ void* buffer_loc;
+ u32 _c;
+ u16 gfx_src;
+ u8 width;
+ u8 right_align : 1;
+ u8 sm_border : 1;
+ u8 unused : 1;
+ u8 draw_border : 1;
+ u8 border_type : 4;
+ u8 fill_type;
+ u8 _15;
+ u8 _16;
+ u8 stylized;
+} Font;
+
#endif