z_parameter: Items & Import Data (#799)

* Import Data

* More functions

* cleanup

* Add Enum

* Many changes, PR and add-ons

* Fix bss

* Better data

* Extra space

* DoubleDefense is boolean

* Missed a macro

* More enums missed

* macro -> enum

* More item cleanup...

* missing/wrong quest items

* Next PR Review

* Revert Interface_AddMagic to Parameter_AddMagic

* Remove QUEST_HEART_CONTAINER

* Fix bss

* Move Color_RGB16 up + fix incorrect numbers

* Add texture pointers

* Add comment

* EQUIP_SLOT_A

* rm redundant comment

* Fix merge

* PR Suggestions

* fix bss
This commit is contained in:
engineer124
2022-07-12 00:45:55 -04:00
committed by GitHub
parent fda5da2500
commit 8e45eb7b1f
60 changed files with 1597 additions and 358 deletions
+6
View File
@@ -19,6 +19,12 @@ typedef struct {
/* 0x3 */ u8 a;
} Color_RGBA8; // size = 0x4
typedef struct {
/* 0x0 */ s16 r;
/* 0x2 */ s16 g;
/* 0x4 */ s16 b;
} Color_RGB16; // size = 0x6
// only use when necessary for alignment purposes
typedef union {
struct {
+17 -18
View File
@@ -1881,31 +1881,30 @@ void Interface_ChangeAlpha(u16 param_1);
// void func_80111CB4(void);
// void func_801129E4(void);
void func_80112AFC(PlayState* play);
void func_80112B40(PlayState* play, u8 arg1);
// void func_80112BE4(void);
void Interface_LoadItemIconImpl(PlayState* play, u8 btn);
void Interface_LoadItemIcon(PlayState* play, u8 btn);
// void func_80112C0C(void);
u32 Item_Give(PlayState* play, u8 param_2);
// void func_801143CC(void);
UNK_TYPE func_80114978(UNK_TYPE arg0);
void func_801149A0(s32 itemId, s16 slotId);
// void func_80114A9C(void);
// void func_80114B84(void);
// void func_80114CA0(void);
s32 Interface_HasEmptyBottle(void);
s32 Interface_HasItemInBottle(u8 itemId);
void func_80114FD0(PlayState* play, u8 itemId, u8 heldItemButton);
// void func_80115130(void);
// void func_801152B8(void);
u8 Item_Give(PlayState* play, u8 item);
u8 Item_CheckObtainability(u8 item);
void Inventory_DeleteItem(s16 item, s16 slot);
void Inventory_UnequipItem(s16 item);
s32 Inventory_ReplaceItem(PlayState* play, u8 oldItem, u8 newItem);
void Inventory_UpdateDeitySwordEquip(PlayState* play) ;
s32 Inventory_HasEmptyBottle(void);
s32 Inventory_HasItemInBottle(u8 item);
void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn);
s32 Inventory_ConsumeFairy(PlayState* play);
void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item);
// void func_801153C8(void);
// void func_80115428(void);
void func_8011552C(PlayState* play, s16 arg1);
// void func_801155B4(void);
// void func_80115764(void);
void func_80115844(PlayState* play, s16 param_2);
s32 func_80115908(PlayState* play, u8 param_2);
void func_801159c0(s16 param_1);
void func_801159EC(s16 arg0);
void func_80115A14(s16 arg0, s16 arg1);
s32 Health_ChangeBy(PlayState* play, s16 healthChange);
void Health_GiveHearts(s16 hearts);
void Rupees_ChangeBy(s16 rupeeChange);
void Inventory_ChangeAmmo(s16 item, s16 ammoChange);
void Parameter_AddMagic(PlayState* play, s16 arg1);
void func_80115D5C(GameState* gamestate);
// void func_80115DB4(void);
+19 -8
View File
@@ -80,21 +80,32 @@
#define C_SLOT_EQUIP(form, button) (gSaveContext.save.equips.cButtonSlots[form][button])
#define CHECK_QUEST_ITEM(item) (GET_SAVE_INVENTORY_QUEST_ITEMS & gBitFlags[item])
#define SET_QUEST_ITEM(item) (gSaveContext.save.inventory.questItems = (GET_SAVE_INVENTORY_QUEST_ITEMS | gBitFlags[item]))
#define REMOVE_QUEST_ITEM(item) (gSaveContext.save.inventory.questItems = (GET_SAVE_INVENTORY_QUEST_ITEMS & (-1 - gBitFlags[item])))
#define CHECK_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.inventory.dungeonItems[(void)0, dungeonIndex] & gBitFlags[item])
#define SET_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.inventory.dungeonItems[(void)0, dungeonIndex] |= (u8)gBitFlags[item])
#define DUNGEON_KEY_COUNT(dungeonIndex) (gSaveContext.save.inventory.dungeonKeys[(void)0, dungeonIndex])
#define GET_CUR_FORM_BTN_ITEM(btn) ((u8)((btn) == EQUIP_SLOT_B ? BUTTON_ITEM_EQUIP(CUR_FORM, btn) : BUTTON_ITEM_EQUIP(0, btn)))
#define GET_CUR_FORM_BTN_SLOT(btn) ((u8)((btn) == EQUIP_SLOT_B ? C_SLOT_EQUIP(CUR_FORM, btn) : C_SLOT_EQUIP(0, btn)))
#define SET_CUR_FORM_BTN_ITEM(btn, item) \
do { \
if ((btn) == EQUIP_SLOT_B) { \
BUTTON_ITEM_EQUIP(CUR_FORM, (btn)) = (item); \
} else { \
BUTTON_ITEM_EQUIP(0, (btn)) = (item); \
} \
} while (0)
#define SET_CUR_FORM_BTN_ITEM(btn, item) \
if ((btn) == EQUIP_SLOT_B) { \
BUTTON_ITEM_EQUIP(CUR_FORM, (btn)) = (item); \
} else { \
BUTTON_ITEM_EQUIP(0, (btn)) = (item); \
} \
(void)0
#define SET_CUR_FORM_BTN_SLOT(btn, item) \
if ((btn) == EQUIP_SLOT_B) { \
C_SLOT_EQUIP(CUR_FORM, (btn)) = (item); \
} else { \
C_SLOT_EQUIP(0, (btn)) = (item); \
} \
(void)0
#define STOLEN_ITEM_NONE (0)
+8 -5
View File
@@ -68,10 +68,13 @@
#define Z_PRIORITY_DMAMGR 17
#define Z_PRIORITY_IRQMGR 18
#define EQUIP_SLOT_B 0
#define EQUIP_SLOT_C_LEFT 1
#define EQUIP_SLOT_C_DOWN 2
#define EQUIP_SLOT_C_RIGHT 3
typedef enum {
/* 0 */ EQUIP_SLOT_B,
/* 1 */ EQUIP_SLOT_C_LEFT,
/* 2 */ EQUIP_SLOT_C_DOWN,
/* 3 */ EQUIP_SLOT_C_RIGHT,
/* 4 */ EQUIP_SLOT_A
} EquipSlot;
typedef struct {
/* 0x0 */ s16 priority; // Lower means higher priority. -1 means it ignores priority
@@ -500,7 +503,7 @@ typedef struct {
/* 0x258 */ s16 unk_258;
/* 0x25A */ s16 unk_25A;
/* 0x25C */ u16 unk_25C;
/* 0x25E */ u16 unk_25E[5]; // ItemId
/* 0x25E */ u16 cursorItem[5];
/* 0x268 */ u16 unk_268[5];
/* 0x272 */ u16 equipTargetItem;
/* 0x274 */ u16 equipTargetSlot;
+26 -4
View File
@@ -7,10 +7,27 @@
// TODO fill out these enums
typedef enum {
/* 0x0 */ EQUIP_SWORD,
/* 0x1 */ EQUIP_SHIELD
/* 0x0 */ EQUIP_TYPE_SWORD,
/* 0x1 */ EQUIP_TYPE_SHIELD,
/* 0x2 */ EQUIP_TYPE_MAX
} EquipmentType;
typedef enum {
/* 0 */ EQUIP_VALUE_SWORD_NONE,
/* 1 */ EQUIP_VALUE_SWORD_KOKIRI,
/* 2 */ EQUIP_VALUE_SWORD_RAZOR,
/* 3 */ EQUIP_VALUE_SWORD_GILDED,
/* 4 */ EQUIP_VALUE_SWORD_DIETY,
/* 5 */ EQUIP_VALUE_SWORD_MAX,
} EquipValueSword;
typedef enum {
/* 0 */ EQUIP_VALUE_SHIELD_NONE,
/* 1 */ EQUIP_VALUE_SHIELD_HERO,
/* 2 */ EQUIP_VALUE_SHIELD_MIRROR,
/* 3 */ EQUIP_VALUE_SHIELD_MAX
} EquipValueShield;
typedef enum {
/* 0x00 */ UPG_QUIVER,
/* 0x01 */ UPG_BOMB_BAG,
@@ -41,9 +58,11 @@ typedef enum {
/* 0x0F */ QUEST_SONG_SOARING,
/* 0x10 */ QUEST_SONG_STORMS,
/* 0x11 */ QUEST_SONG_SUN,
/* 0x12 */ QUEST_BOMBERS_NOTEBOOK,
/* 0x12 */ QUEST_BOMBERS_NOTEBOOK, // Obtained Bombers Notebook
/* 0x13 */ QUEST_SKULL_TOKEN,
/* 0x18 */ QUEST_SONG_LULLABY_INTRO = 0x18,
/* 0x19 */ QUEST_UNK_19 // Related to PictoBox
/* 0x19 */ QUEST_PICTOGRAPH, // A photo from the pictograph box is saved
/* 0x1C */ QUEST_HEART_PIECE_COUNT = 0x1C
} QuestItem;
typedef enum {
@@ -268,6 +287,9 @@ typedef enum {
/* 0xFF */ ITEM_NONE = 0xFF
} ItemID;
#define BOTTLE_FIRST 0
#define BOTTLE_MAX 6
typedef enum {
/* 0x00 */ GI_NONE,
/* 0x01 */ GI_RUPEE_GREEN,