diff options
Diffstat (limited to 'include/structures.h')
| -rw-r--r-- | include/structures.h | 374 |
1 files changed, 1 insertions, 373 deletions
diff --git a/include/structures.h b/include/structures.h index 97233eea..811bae31 100644 --- a/include/structures.h +++ b/include/structures.h @@ -2,306 +2,6 @@ #define STRUCTURES_H #include "global.h" -#include "entity.h" -#include "player.h" - -typedef struct { - int signature; - u8 saveFileId; - u8 msg_speed; - u8 brightness; - u8 language; - u8 name[6]; - u8 invalid; - u8 initialized; -} SaveHeader; -#define gSaveHeader ((SaveHeader*)(0x2000000)) - -typedef struct { - u8 unk_00; - u8 unk_01; - u8 unk_02[0xE]; -} struct_02000040; - -extern struct_02000040 gUnk_02000040; - -typedef struct { - s32 signature; - u8 field_0x4; - u8 listenForKeyPresses; - u8 field_0x6; - u8 field_0x7; - u8 pad[24]; -} struct_02000010; -static_assert(sizeof(struct_02000010) == 0x20); - -extern struct_02000010 gUnk_02000010; - -typedef struct { - u8 unk0; - u8 unk1; - u16 unk2; -} struct_020354C0; -extern struct_020354C0 gUnk_020354C0[0x20]; - -#define MAX_UI_ELEMENTS 24 - -typedef enum { - UI_ELEMENT_BUTTON_A, - UI_ELEMENT_BUTTON_B, - UI_ELEMENT_BUTTON_R, - UI_ELEMENT_ITEM_A, - UI_ELEMENT_ITEM_B, - UI_ELEMENT_TEXT_R, - UI_ELEMENT_HEART, - UI_ELEMENT_EZLONAGSTART, - UI_ELEMENT_EZLONAGACTIVE, - UI_ELEMENT_TEXT_A, - UI_ELEMENT_TEXT_B -} UIElementType; - -/** - * @brief Floating UI element - */ -typedef struct { - u8 used : 1; - u8 unk_0_1 : 1; - u8 unk_0_2 : 2; // Load data into VRAM? 0: do not load, 1: ready to load 2: loaded - u8 unk_0_4 : 4; - u8 type; /**< @see UIElementType */ - u8 type2; // Subtype - u8 buttonElementId; /**< Id of the button UI element this text is attached to */ - u8 action; - u8 unk_5; - u8 unk_6; - u8 unk_7; - u8 unk_8; - u8 unk_9[3]; - u16 x; - u16 y; - u8 frameIndex; - u8 duration; - u8 spriteSettings; - u8 frameSettings; - Frame* framePtr; - u8 unk_18; - u8 numTiles; - u16 unk_1a; // TODO oam id? VRAM target (element->unk_1a * 0x20 + 0x6010000) - u32* firstTile; -} UIElement; - -typedef enum { - HUD_HIDE_NONE, - HUD_HIDE_1 = 0x1, // A - HUD_HIDE_2 = 0x2, // B - HUD_HIDE_4 = 0x4, // R - HUD_HIDE_8 = 0x8, - HUD_HIDE_HEARTS = 0x10, - HUD_HIDE_CHARGE_BAR = 0x20, - HUD_HIDE_RUPEES = 0x40, - HUD_HIDE_KEYS = 0x80, - - HUD_HIDE_ALL = 0xff -} HUDHideFlags; - -typedef struct { - u8 unk_0; - u8 hideFlags; - u8 unk_2; - u8 health; - u8 maxHealth; - u8 unk_5; - u8 unk_6; - u8 unk_7; - u8 unk_8; - u8 unk_9; - u8 unk_a; - u8 unk_b; - u8 unk_c; - u8 unk_d; - u16 rupees; - u8 unk_10; // TODO drawing keys dirty flag or something? - u8 unk_11; - u8 dungeonKeys; - s8 unk_13; - s8 unk_14; - u8 unk_15; - u16 buttonX[3]; /**< X coordinates for the button UI elements */ - u16 buttonY[3]; /**< Y coordinates for the button UI elements */ - u8 filler22[0x2]; - u8 ezloNagFuncIndex; - u8 filler25[7]; - u8 rActionInteractObject; // used as R button UI frame index - u8 rActionInteractTile; - u8 rActionGrabbing; - u8 rActionPlayerState; // if not 0, overrides other R actions - u8 buttonText[3]; - u8 unk_33; - UIElement elements[MAX_UI_ELEMENTS]; -} HUD; -extern HUD gHUD; - -#define MAX_GFX_SLOTS 44 - -typedef enum { - GFX_SLOT_FREE, - GFX_SLOT_UNLOADED, // some sort of free? no longer in use? - GFX_SLOT_STATUS2, // some sort of free? - GFX_SLOT_FOLLOWER, // Set by SetGFXSlotStatus for the following slots - GFX_SLOT_RESERVED, // maybe ready to be loaded? - GFX_SLOT_GFX, - GFX_SLOT_PALETTE -} GfxSlotStatus; - -typedef enum { - GFX_VRAM_0, - GFX_VRAM_1, // uploaded to vram? - GFX_VRAM_2, - GFX_VRAM_3, // not yet uploaded to vram? -} GfxSlotVramStatus; - -typedef struct { - /*0x00*/ u8 status : 4; - /*0x00*/ u8 vramStatus : 4; // Whether the gfx was uploaded to the vram? - /*0x01*/ u8 slotCount; - /*0x02*/ u8 referenceCount; /**< How many entities use this gfx slot */ - /*0x03*/ u8 unk_3; - /*0x04*/ u16 gfxIndex; - /*0x06*/ u16 paletteIndex; - /*0x08*/ const void* palettePointer; -} GfxSlot; - -typedef struct { - /*0x00*/ u8 unk0; - /*0x01*/ u8 unk_1; - /*0x02*/ u8 unk_2; - /*0x03*/ u8 unk_3; - /*0x04*/ GfxSlot slots[MAX_GFX_SLOTS]; -} GfxSlotList; -extern GfxSlotList gGFXSlots; - -static_assert(sizeof(GfxSlotList) == 0x214); - -typedef struct { - u16 unk_00; - u8 unk_02[0xE]; -} struct_02034480; -extern struct_02034480 gUnk_02034480; - -extern u16 gBG0Buffer[0x400]; -extern u16 gBG1Buffer[0x400]; -extern u16 gBG2Buffer[0x400]; -extern u16 gBG3Buffer[0x800]; - -typedef enum { ACTIVE_ITEM_0, ACTIVE_ITEM_1, ACTIVE_ITEM_2, ACTIVE_ITEM_LANTERN, MAX_ACTIVE_ITEMS } ActiveItemIndex; -/** - * Currently active items. - * 0: Active items? - * 1: Boots, Cape - * 2: would be used by CreateItem1 if gActiveItems[1] was already filled - * 3: Lamp - */ -extern ItemBehavior gActiveItems[MAX_ACTIVE_ITEMS]; -static_assert(sizeof(gActiveItems) == 0x70); - -typedef struct { - u8 event_priority; // system requested priority - u8 ent_priority; // entity requested priority - u8 queued_priority; - u8 queued_priority_reset; - Entity* requester; - u16 priority_timer; -} PriorityHandler; -extern PriorityHandler gPriorityHandler; - -typedef struct { - u8 disabled; - u8 screen; - u8 unk2[0xf]; // cursor positions on the different screens - u8 unk11; - u8 unk12; - u8 unk13; - s8 screen2; - u8 unk15; - s8 unk16; - u8 unk17; -} PauseMenuOptions; - -extern PauseMenuOptions gPauseMenuOptions; -static_assert(sizeof(PauseMenuOptions) == 0x18); - -typedef struct { - u8 unk00 : 1; - u8 unk01 : 3; - u8 unk04 : 4; - u8 unk1; - u8 charColor; - u8 bgColor; - u16 unk4; - u16 unk6; - void* unk8; -} WStruct; - -static_assert(sizeof(WStruct) == 12); - -typedef struct { - u8 unk0; - u8 unk1; - u16 unk2; - u8 unk4; - u8 unk5; - u8 unk6; - u8 unk7; -} OAMObj; - -typedef struct { - u8 field_0x0; - u8 field_0x1; - u8 spritesOffset; - u8 updated; - u16 _4; - u16 _6; - u8 _0[0x18]; - struct OamData oam[0x80]; - OAMObj unk[0xA0]; /* todo: affine */ -} OAMControls; -extern OAMControls gOAMControls; - -typedef struct { - union SplitWord _0; - union SplitWord _4; -} struct_020227E8; - -typedef struct { - s8 x; - s8 y; - s8 width; - s8 height; -} Rect; - -typedef struct { - /*0x00*/ u8 ignoreLayer; /* if bit 0 set, skip layer check for collision */ - /*0x01*/ u8 type; - /*0x02*/ u8 interactDirections; /* lower 4 bits determine Link's allowed facing directions to interact, 0 to allow - (0000WSEN) */ - /*0x03*/ u8 kinstoneId; - /*0x04*/ const Rect* customHitbox; /* optional custom rectangle */ - /*0x08*/ Entity* entity; -} InteractableObject; - -typedef struct { - /*0x00*/ u8 isUpdated; - /*0x01*/ u8 unused; - /*0x02*/ u8 kinstoneId; - /*0x03*/ u8 currentIndex; /* index of currentObject in candidate list, or 0xFF */ - /*0x04*/ InteractableObject* currentObject; - /*0x08*/ InteractableObject - candidates[0x20]; /* contains the loaded NPCs, key doors, windcrests and other objects */ -} PossibleInteraction; - -static_assert(sizeof(PossibleInteraction) == 0x188); - -extern PossibleInteraction gPossibleInteraction; typedef struct { u8 numTiles; @@ -316,83 +16,11 @@ typedef struct { u32 pad; } SpritePtr; -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 charColor; - u8 _16; - u8 stylized; -} Font; - -typedef struct { - u8 unk_0; - u8 unk_1; - u8 unk_2[2]; - u16 unk_4; - u8 filler[12]; - Entity* unk_14; - u8 unk_18; - u8 unk_19; - u8 unk_1a; - u8 unk_1b; -} struct_02018EB0; - -extern struct_02018EB0 gUnk_02018EB0; - -typedef struct { - s16 tileIndex; - s16 tilePosOffset; -} TileData; - -typedef struct { - /*0x00*/ bool8 isOnlyActiveFirstFrame; /**< Is the behavior for this item only created on the first frame */ - /*0x01*/ u8 priority; - /*0x02*/ u8 createFunc; - /*0x03*/ u8 playerItemId; /**< Id for the corresponsing PlayerItem. */ - /*0x04*/ u16 frameIndex; - /*0x06*/ u8 animPriority; - /*0x07*/ bool8 isChangingAttackStatus; - /*0x08*/ bool8 isUseableAsMinish; - /*0x09*/ u8 pad[3]; -} ItemDefinition; - -static_assert(sizeof(ItemDefinition) == 0xc); +extern const SpritePtr gSpritePtrs[]; typedef struct { u8 frame; u8 frameIndex; } PACKED FrameStruct; -typedef struct { - /*0x0*/ u8 menuType; - /*0x1*/ u16 font; - /*0x3*/ u8 unk_3; // TODO padding? - /*0x4*/ u16 transitionTimer; - /*0x6*/ u16 gfxEntry; - /*0x8*/ u16 bg2XOffset; - /*0xa*/ u16 sm_unk_14; -} PACKED StaffrollEntry; - -static_assert(sizeof(StaffrollEntry) == 0xc); - -typedef struct { - u8 paletteGroup; - u8 gfxGroup; -} PACKED StaffrollGfxEntry; - -extern const u8 gGlobalGfxAndPalettes[]; -extern u32 gUsedPalettes; - #endif // STRUCTURES_H |
