From 1acc53cfc6085f9147df9d304223792eeccb775a Mon Sep 17 00:00:00 2001 From: Pablo <72659707+Pepe20129@users.noreply.github.com> Date: Fri, 1 Aug 2025 17:37:50 +0200 Subject: [PATCH] Document upgrades --- include/inventory.h | 1 + include/item.h | 12 -- include/save.h | 4 - include/upgrade.h | 163 ++++++++++++++++++ src/code/z_inventory.c | 49 +++--- src/code/z_parameter.c | 92 +++++----- src/code/z_player_lib.c | 6 +- src/code/z_sram.c | 22 ++- src/overlays/actors/ovl_En_Dns/z_en_dns.c | 4 +- .../actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c | 4 +- src/overlays/actors/ovl_En_Du/z_en_du.c | 4 +- .../actors/ovl_En_Ex_Item/z_en_ex_item.c | 4 +- src/overlays/actors/ovl_En_Ge1/z_en_ge1.c | 8 +- src/overlays/actors/ovl_En_Go/z_en_go.c | 2 +- src/overlays/actors/ovl_En_Go2/z_en_go2.c | 10 +- src/overlays/actors/ovl_En_Ossan/z_en_ossan.c | 2 +- src/overlays/actors/ovl_En_Sth/z_en_sth.c | 4 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 8 +- .../actors/ovl_player_actor/z_player.c | 10 +- .../ovl_kaleido_scope/z_kaleido_equipment.c | 10 +- .../misc/ovl_kaleido_scope/z_kaleido_scope.c | 2 +- 21 files changed, 300 insertions(+), 121 deletions(-) create mode 100644 include/upgrade.h diff --git a/include/inventory.h b/include/inventory.h index 3ad5c1bbbd..e4229d3136 100644 --- a/include/inventory.h +++ b/include/inventory.h @@ -3,6 +3,7 @@ #include "ultra64.h" #include "item.h" +#include "upgrade.h" struct PlayState; diff --git a/include/item.h b/include/item.h index f5d4a530af..e23229b5a3 100644 --- a/include/item.h +++ b/include/item.h @@ -76,18 +76,6 @@ typedef enum EquipValueBoots { /* 4 */ EQUIP_VALUE_BOOTS_MAX } EquipValueBoots; -typedef enum UpgradeType { - /* 0x00 */ UPG_QUIVER, - /* 0x01 */ UPG_BOMB_BAG, - /* 0x02 */ UPG_STRENGTH, - /* 0x03 */ UPG_SCALE, - /* 0x04 */ UPG_WALLET, - /* 0x05 */ UPG_BULLET_BAG, - /* 0x06 */ UPG_DEKU_STICKS, - /* 0x07 */ UPG_DEKU_NUTS, - /* 0x08 */ UPG_MAX -} UpgradeType; - typedef enum QuestItem { /* 0x00 */ QUEST_MEDALLION_FOREST, /* 0x01 */ QUEST_MEDALLION_FIRE, diff --git a/include/save.h b/include/save.h index 20ee760aac..a0ba548038 100644 --- a/include/save.h +++ b/include/save.h @@ -485,10 +485,6 @@ typedef enum LinkAge { #define TUNIC_EQUIP_TO_PLAYER(tunicEquip) ((tunicEquip) - 1) #define BOOTS_EQUIP_TO_PLAYER(bootsEquip) ((bootsEquip) - 1) -#define CUR_UPG_VALUE(upg) ((s32)(gSaveContext.save.info.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg]) -#define CAPACITY(upg, value) gUpgradeCapacities[upg][value] -#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg)) - #define CHECK_QUEST_ITEM(item) (gSaveContext.save.info.inventory.questItems & gBitFlags[item]) #define CHECK_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.info.inventory.dungeonItems[dungeonIndex] & gBitFlags[item]) diff --git a/include/upgrade.h b/include/upgrade.h new file mode 100644 index 0000000000..f0cd5fd4e5 --- /dev/null +++ b/include/upgrade.h @@ -0,0 +1,163 @@ +#ifndef UPGRADE_H +#define UPGRADE_H + +#include "assert.h" +#include "ultra64/ultratypes.h" + +typedef enum UpgradeType { + /* 0x00 */ UPG_QUIVER, + /* 0x01 */ UPG_BOMB_BAG, + /* 0x02 */ UPG_STRENGTH, + /* 0x03 */ UPG_SCALE, + /* 0x04 */ UPG_WALLET, + /* 0x05 */ UPG_BULLET_BAG, + /* 0x06 */ UPG_DEKU_STICKS, + /* 0x07 */ UPG_DEKU_NUTS, + /* 0x08 */ UPG_MAX +} UpgradeType; + +#define BIT_WIDTH_UPG_QUIVER 3 + +typedef enum QuiverUpgrades { + /* 0 */ UPG_QUIVER_NONE, + /* 1 */ UPG_QUIVER_NORMAL, + /* 2 */ UPG_QUIVER_BIG, + /* 3 */ UPG_QUIVER_BIGGEST, + /* 4 */ UPG_QUIVER_MAX +} QuiverUpgrades; + +static_assert(UPG_QUIVER_MAX <= 1 << BIT_WIDTH_UPG_QUIVER, "All quiver upgrade values should fit in its assigned bitwidth"); + +#define BIT_WIDTH_UPG_BOMB_BAG 3 + +typedef enum BombBagUpgrades { + /* 0 */ UPG_BOMB_BAG_NONE, + /* 1 */ UPG_BOMB_BAG_NORMAL, + /* 2 */ UPG_BOMB_BAG_BIG, + /* 3 */ UPG_BOMB_BAG_BIGGEST, + /* 4 */ UPG_BOMB_BAG_MAX +} BombBagUpgrades; + +static_assert(UPG_BOMB_BAG_MAX <= 1 << BIT_WIDTH_UPG_BOMB_BAG, "All bomb bag upgrade values should fit in its assigned bitwidth"); + +#define BIT_WIDTH_UPG_STRENGTH 3 + +typedef enum StrengthUpgrades { + /* 0 */ UPG_STRENGTH_NONE, + /* 1 */ UPG_STRENGTH_GORON_BRACELET, + /* 2 */ UPG_STRENGTH_SILVER_GAUNTLETS, + /* 3 */ UPG_STRENGTH_GOLD_GAUNTLETS, + /* 4 */ UPG_STRENGTH_MAX +} StrengthUpgrades; + +static_assert(UPG_STRENGTH_MAX <= 1 << BIT_WIDTH_UPG_STRENGTH, "All strength upgrade values should fit in its assigned bitwidth"); + +#define BIT_WIDTH_UPG_SCALE 3 + +typedef enum ScaleUpgrades { + /* 0 */ UPG_SCALE_NONE, + /* 1 */ UPG_SCALE_SILVER, + /* 2 */ UPG_SCALE_GOLD, + /* 3 */ UPG_SCALE_MAX +} ScaleUpgrades; + +static_assert(UPG_SCALE_MAX <= 1 << BIT_WIDTH_UPG_SCALE, "All scale upgrade values should fit in its assigned bitwidth"); + +#define BIT_WIDTH_UPG_WALLET 2 + +typedef enum WalletUpgrades { + /* 0 */ UPG_WALLET_CHILD, + /* 1 */ UPG_WALLET_ADULT, + /* 2 */ UPG_WALLET_GIANT, + /* 3 */ UPG_WALLET_MAX +} WalletUpgrades; + +static_assert(UPG_WALLET_MAX <= 1 << BIT_WIDTH_UPG_WALLET, "All wallet upgrade values should fit in its assigned bitwidth"); + +#define BIT_WIDTH_UPG_BULLET_BAG 3 + +typedef enum BulletBagUpgrades { + /* 0 */ UPG_BULLET_BAG_NONE, + /* 1 */ UPG_BULLET_BAG_NORMAL, + /* 2 */ UPG_BULLET_BAG_BIG, + /* 3 */ UPG_BULLET_BAG_BIGGEST, + /* 4 */ UPG_BULLET_BAG_MAX +} BulletBagUpgrades; + +static_assert(UPG_BULLET_BAG_MAX <= 1 << BIT_WIDTH_UPG_BULLET_BAG, "All bullet bag upgrade values should fit in its assigned bitwidth"); + +#define BIT_WIDTH_UPG_DEKU_STICKS 3 + +typedef enum DekuStickUpgrades { + /* 0 */ UPG_DEKU_STICKS_NONE, + /* 1 */ UPG_DEKU_STICKS_10, + /* 2 */ UPG_DEKU_STICKS_20, + /* 3 */ UPG_DEKU_STICKS_30, + /* 4 */ UPG_DEKU_STICKS_MAX +} DekuStickUpgrades; + +static_assert(UPG_DEKU_STICKS_MAX <= 1 << BIT_WIDTH_UPG_DEKU_STICKS, "All deku stick upgrade values should fit in its assigned bitwidth"); + +#define BIT_WIDTH_UPG_DEKU_NUTS 3 + +typedef enum DekuNutUpgrades { + /* 0 */ UPG_DEKU_NUTS_NONE, + /* 1 */ UPG_DEKU_NUTS_20, + /* 2 */ UPG_DEKU_NUTS_30, + /* 3 */ UPG_DEKU_NUTS_40, + /* 4 */ UPG_DEKU_NUTS_MAX +} DekuNutUpgrades; + +static_assert(UPG_DEKU_NUTS_MAX <= 1 << BIT_WIDTH_UPG_DEKU_NUTS, "All deku nut upgrade values should fit in its assigned bitwidth"); + +#define BITS_PER_BYTE 8 + +static_assert( + BIT_WIDTH_UPG_QUIVER + + BIT_WIDTH_UPG_BOMB_BAG + + BIT_WIDTH_UPG_STRENGTH + + BIT_WIDTH_UPG_SCALE + + BIT_WIDTH_UPG_WALLET + + BIT_WIDTH_UPG_BULLET_BAG + + BIT_WIDTH_UPG_DEKU_STICKS + + BIT_WIDTH_UPG_DEKU_NUTS < sizeof(u32) * BITS_PER_BYTE, + "Upgrades must fit in a u32" +); + +#define SHIFT_UPG_QUIVER 0 +#define SHIFT_UPG_BOMB_BAG (SHIFT_UPG_QUIVER + BIT_WIDTH_UPG_QUIVER) +#define SHIFT_UPG_STRENGTH (SHIFT_UPG_BOMB_BAG + BIT_WIDTH_UPG_BOMB_BAG) +#define SHIFT_UPG_SCALE (SHIFT_UPG_STRENGTH + BIT_WIDTH_UPG_STRENGTH) +#define SHIFT_UPG_WALLET (SHIFT_UPG_SCALE + BIT_WIDTH_UPG_SCALE) +#define SHIFT_UPG_BULLET_BAG (SHIFT_UPG_WALLET + BIT_WIDTH_UPG_WALLET) +#define SHIFT_UPG_DEKU_STICKS (SHIFT_UPG_BULLET_BAG + BIT_WIDTH_UPG_BULLET_BAG) +#define SHIFT_UPG_DEKU_NUTS (SHIFT_UPG_DEKU_STICKS + BIT_WIDTH_UPG_DEKU_STICKS) + +#ifndef GLUE +# define GLUE(a, b) a##b +#endif +#ifndef GLUE2 +# define GLUE2(a, b) GLUE(a, b) +#endif + +#define GET_UPGRADE_BITMASK(upg) (((1 << GLUE2(BIT_WIDTH_, upg)) - 1) << GLUE2(SHIFT_, upg)) + +#define GET_PACKED_UPGRADE_VALUE(upgValue, upg) ((upgValue & ((1 << GLUE2(BIT_WIDTH_, upg)) - 1)) << GLUE2(SHIFT_, upg)) + +#define GET_PACKED_UPGRADES_VALUE(quiver, bombBag, strength, scale, wallet, bulletBag, dekuSticks, dekuNuts) \ + ( \ + GET_PACKED_UPGRADE_VALUE(quiver, UPG_QUIVER) | \ + GET_PACKED_UPGRADE_VALUE(bombBag, UPG_BOMB_BAG) | \ + GET_PACKED_UPGRADE_VALUE(strength, UPG_STRENGTH) | \ + GET_PACKED_UPGRADE_VALUE(scale, UPG_SCALE) | \ + GET_PACKED_UPGRADE_VALUE(wallet, UPG_WALLET) | \ + GET_PACKED_UPGRADE_VALUE(bulletBag, UPG_BULLET_BAG) | \ + GET_PACKED_UPGRADE_VALUE(dekuSticks, UPG_DEKU_STICKS) | \ + GET_PACKED_UPGRADE_VALUE(dekuNuts, UPG_DEKU_NUTS) \ + ) + +#define CUR_UPG_VALUE(upg) ((s32)(gSaveContext.save.info.inventory.upgrades & gUpgradeMasks[upg]) >> gUpgradeShifts[upg]) +#define CAPACITY(upg, value) gUpgradeCapacities[upg][value] +#define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg)) + +#endif \ No newline at end of file diff --git a/src/code/z_inventory.c b/src/code/z_inventory.c index 8ae2bcbf20..7b357c6347 100644 --- a/src/code/z_inventory.c +++ b/src/code/z_inventory.c @@ -31,24 +31,25 @@ u16 gEquipNegMasks[EQUIP_TYPE_MAX] = { }; u32 gUpgradeMasks[UPG_MAX] = { - 0x00000007, // UPG_QUIVER - 0x00000038, // UPG_BOMB_BAG - 0x000001C0, // UPG_STRENGTH - 0x00000E00, // UPG_SCALE - 0x00003000, // UPG_WALLET - 0x0001C000, // UPG_BULLET_BAG - 0x000E0000, // UPG_DEKU_STICKS - 0x00700000, // UPG_DEKU_NUTS + GET_UPGRADE_BITMASK(UPG_QUIVER), + GET_UPGRADE_BITMASK(UPG_BOMB_BAG), + GET_UPGRADE_BITMASK(UPG_STRENGTH), + GET_UPGRADE_BITMASK(UPG_SCALE), + GET_UPGRADE_BITMASK(UPG_WALLET), + GET_UPGRADE_BITMASK(UPG_BULLET_BAG), + GET_UPGRADE_BITMASK(UPG_DEKU_STICKS), + GET_UPGRADE_BITMASK(UPG_DEKU_NUTS), }; + u32 gUpgradeNegMasks[UPG_MAX] = { - ~0x00000007, // UPG_QUIVER - ~0x00000038, // UPG_BOMB_BAG - ~0x000001C0, // UPG_STRENGTH - ~0x00000E00, // UPG_SCALE - ~0x00003000, // UPG_WALLET - ~0x0001C000, // UPG_BULLET_BAG - ~0x000E0000, // UPG_DEKU_STICKS - ~0x00700000, // UPG_DEKU_NUTS + ~GET_UPGRADE_BITMASK(UPG_QUIVER), + ~GET_UPGRADE_BITMASK(UPG_BOMB_BAG), + ~GET_UPGRADE_BITMASK(UPG_STRENGTH), + ~GET_UPGRADE_BITMASK(UPG_SCALE), + ~GET_UPGRADE_BITMASK(UPG_WALLET), + ~GET_UPGRADE_BITMASK(UPG_BULLET_BAG), + ~GET_UPGRADE_BITMASK(UPG_DEKU_STICKS), + ~GET_UPGRADE_BITMASK(UPG_DEKU_NUTS), }; u8 gEquipShifts[EQUIP_TYPE_MAX] = { @@ -59,14 +60,14 @@ u8 gEquipShifts[EQUIP_TYPE_MAX] = { }; u8 gUpgradeShifts[UPG_MAX] = { - 0, // UPG_QUIVER - 3, // UPG_BOMB_BAG - 6, // UPG_STRENGTH - 9, // UPG_SCALE - 12, // UPG_WALLET - 14, // UPG_BULLET_BAG - 17, // UPG_DEKU_STICKS - 20, // UPG_DEKU_NUTS + SHIFT_UPG_QUIVER, + SHIFT_UPG_BOMB_BAG, + SHIFT_UPG_STRENGTH, + SHIFT_UPG_SCALE, + SHIFT_UPG_WALLET, + SHIFT_UPG_BULLET_BAG, + SHIFT_UPG_DEKU_STICKS, + SHIFT_UPG_DEKU_NUTS, }; u16 gUpgradeCapacities[UPG_MAX][4] = { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 1eb2b08ab6..e8bc1c4f22 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -1503,10 +1503,10 @@ u8 Item_Give(PlayState* play, u8 item) { return ITEM_NONE; } } else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) { - if (CUR_UPG_VALUE(UPG_QUIVER) == 0) { - Inventory_ChangeUpgrade(UPG_QUIVER, 1); + if (CUR_UPG_VALUE(UPG_QUIVER) == UPG_QUIVER_NONE) { + Inventory_ChangeUpgrade(UPG_QUIVER, UPG_QUIVER_NORMAL); INV_CONTENT(ITEM_BOW) = ITEM_BOW; - AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 1); + AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, UPG_QUIVER_NORMAL); return ITEM_NONE; } else { AMMO(ITEM_BOW)++; @@ -1515,26 +1515,26 @@ u8 Item_Give(PlayState* play, u8 item) { } } } else if (item == ITEM_QUIVER_40) { - Inventory_ChangeUpgrade(UPG_QUIVER, 2); - AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 2); + Inventory_ChangeUpgrade(UPG_QUIVER, UPG_QUIVER_BIG); + AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, UPG_QUIVER_BIG); return ITEM_NONE; } else if (item == ITEM_QUIVER_50) { - Inventory_ChangeUpgrade(UPG_QUIVER, 3); - AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, 3); + Inventory_ChangeUpgrade(UPG_QUIVER, UPG_QUIVER_BIGGEST); + AMMO(ITEM_BOW) = CAPACITY(UPG_QUIVER, UPG_QUIVER_BIGGEST); return ITEM_NONE; } else if (item == ITEM_BULLET_BAG_40) { - Inventory_ChangeUpgrade(UPG_BULLET_BAG, 2); - AMMO(ITEM_SLINGSHOT) = CAPACITY(UPG_BULLET_BAG, 2); + Inventory_ChangeUpgrade(UPG_BULLET_BAG, UPG_BULLET_BAG_BIG); + AMMO(ITEM_SLINGSHOT) = CAPACITY(UPG_BULLET_BAG, UPG_BULLET_BAG_BIG); return ITEM_NONE; } else if (item == ITEM_BULLET_BAG_50) { - Inventory_ChangeUpgrade(UPG_BULLET_BAG, 3); - AMMO(ITEM_SLINGSHOT) = CAPACITY(UPG_BULLET_BAG, 3); + Inventory_ChangeUpgrade(UPG_BULLET_BAG, UPG_BULLET_BAG_BIGGEST); + AMMO(ITEM_SLINGSHOT) = CAPACITY(UPG_BULLET_BAG, UPG_BULLET_BAG_BIGGEST); return ITEM_NONE; } else if (item == ITEM_BOMB_BAG_20) { - if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { - Inventory_ChangeUpgrade(UPG_BOMB_BAG, 1); + if (CUR_UPG_VALUE(UPG_BOMB_BAG) == UPG_BOMB_BAG_NONE) { + Inventory_ChangeUpgrade(UPG_BOMB_BAG, UPG_BOMB_BAG_NORMAL); INV_CONTENT(ITEM_BOMB) = ITEM_BOMB; - AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 1); + AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, UPG_BOMB_BAG_NORMAL); return ITEM_NONE; } else { AMMO(ITEM_BOMB)++; @@ -1543,61 +1543,61 @@ u8 Item_Give(PlayState* play, u8 item) { } } } else if (item == ITEM_BOMB_BAG_30) { - Inventory_ChangeUpgrade(UPG_BOMB_BAG, 2); - AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 2); + Inventory_ChangeUpgrade(UPG_BOMB_BAG, UPG_BOMB_BAG_BIG); + AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, UPG_BOMB_BAG_BIG); return ITEM_NONE; } else if (item == ITEM_BOMB_BAG_40) { - Inventory_ChangeUpgrade(UPG_BOMB_BAG, 3); - AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, 3); + Inventory_ChangeUpgrade(UPG_BOMB_BAG, UPG_BOMB_BAG_BIGGEST); + AMMO(ITEM_BOMB) = CAPACITY(UPG_BOMB_BAG, UPG_BOMB_BAG_BIGGEST); return ITEM_NONE; } else if (item == ITEM_STRENGTH_GORONS_BRACELET) { - Inventory_ChangeUpgrade(UPG_STRENGTH, 1); + Inventory_ChangeUpgrade(UPG_STRENGTH, UPG_STRENGTH_GORON_BRACELET); return ITEM_NONE; } else if (item == ITEM_STRENGTH_SILVER_GAUNTLETS) { - Inventory_ChangeUpgrade(UPG_STRENGTH, 2); + Inventory_ChangeUpgrade(UPG_STRENGTH, UPG_STRENGTH_SILVER_GAUNTLETS); return ITEM_NONE; } else if (item == ITEM_STRENGTH_GOLD_GAUNTLETS) { - Inventory_ChangeUpgrade(UPG_STRENGTH, 3); + Inventory_ChangeUpgrade(UPG_STRENGTH, UPG_STRENGTH_GOLD_GAUNTLETS); return ITEM_NONE; } else if (item == ITEM_SCALE_SILVER) { - Inventory_ChangeUpgrade(UPG_SCALE, 1); + Inventory_ChangeUpgrade(UPG_SCALE, UPG_SCALE_SILVER); return ITEM_NONE; } else if (item == ITEM_SCALE_GOLDEN) { - Inventory_ChangeUpgrade(UPG_SCALE, 2); + Inventory_ChangeUpgrade(UPG_SCALE, UPG_SCALE_GOLD); return ITEM_NONE; } else if (item == ITEM_ADULTS_WALLET) { - Inventory_ChangeUpgrade(UPG_WALLET, 1); + Inventory_ChangeUpgrade(UPG_WALLET, UPG_WALLET_ADULT); return ITEM_NONE; } else if (item == ITEM_GIANTS_WALLET) { - Inventory_ChangeUpgrade(UPG_WALLET, 2); + Inventory_ChangeUpgrade(UPG_WALLET, UPG_WALLET_GIANT); return ITEM_NONE; } else if (item == ITEM_DEKU_STICK_UPGRADE_20) { if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_DEKU_STICK) = ITEM_DEKU_STICK; } - Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 2); - AMMO(ITEM_DEKU_STICK) = CAPACITY(UPG_DEKU_STICKS, 2); + Inventory_ChangeUpgrade(UPG_DEKU_STICKS, UPG_DEKU_STICKS_20); + AMMO(ITEM_DEKU_STICK) = CAPACITY(UPG_DEKU_STICKS, UPG_DEKU_STICKS_20); return ITEM_NONE; } else if (item == ITEM_DEKU_STICK_UPGRADE_30) { if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_DEKU_STICK) = ITEM_DEKU_STICK; } - Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 3); - AMMO(ITEM_DEKU_STICK) = CAPACITY(UPG_DEKU_STICKS, 3); + Inventory_ChangeUpgrade(UPG_DEKU_STICKS, UPG_DEKU_STICKS_30); + AMMO(ITEM_DEKU_STICK) = CAPACITY(UPG_DEKU_STICKS, UPG_DEKU_STICKS_30); return ITEM_NONE; } else if (item == ITEM_DEKU_NUT_UPGRADE_30) { if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_DEKU_NUT) = ITEM_DEKU_NUT; } - Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 2); - AMMO(ITEM_DEKU_NUT) = CAPACITY(UPG_DEKU_NUTS, 2); + Inventory_ChangeUpgrade(UPG_DEKU_NUTS, UPG_DEKU_NUTS_30); + AMMO(ITEM_DEKU_NUT) = CAPACITY(UPG_DEKU_NUTS, UPG_DEKU_NUTS_30); return ITEM_NONE; } else if (item == ITEM_DEKU_NUT_UPGRADE_40) { if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { INV_CONTENT(ITEM_DEKU_NUT) = ITEM_DEKU_NUT; } - Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 3); - AMMO(ITEM_DEKU_NUT) = CAPACITY(UPG_DEKU_NUTS, 3); + Inventory_ChangeUpgrade(UPG_DEKU_NUTS, UPG_DEKU_NUTS_40); + AMMO(ITEM_DEKU_NUT) = CAPACITY(UPG_DEKU_NUTS, UPG_DEKU_NUTS_40); return ITEM_NONE; } else if (item == ITEM_LONGSHOT) { INV_CONTENT(item) = item; @@ -1610,7 +1610,7 @@ u8 Item_Give(PlayState* play, u8 item) { return ITEM_NONE; } else if (item == ITEM_DEKU_STICK) { if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { - Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 1); + Inventory_ChangeUpgrade(UPG_DEKU_STICKS, UPG_DEKU_STICKS_10); AMMO(ITEM_DEKU_STICK) = 1; } else { AMMO(ITEM_DEKU_STICK)++; @@ -1620,7 +1620,7 @@ u8 Item_Give(PlayState* play, u8 item) { } } else if ((item == ITEM_DEKU_STICKS_5) || (item == ITEM_DEKU_STICKS_10)) { if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { - Inventory_ChangeUpgrade(UPG_DEKU_STICKS, 1); + Inventory_ChangeUpgrade(UPG_DEKU_STICKS, UPG_DEKU_STICKS_10); AMMO(ITEM_DEKU_STICK) = sAmmoRefillCounts[item - ITEM_DEKU_STICKS_5]; } else { AMMO(ITEM_DEKU_STICK) += sAmmoRefillCounts[item - ITEM_DEKU_STICKS_5]; @@ -1631,7 +1631,7 @@ u8 Item_Give(PlayState* play, u8 item) { item = ITEM_DEKU_STICK; } else if (item == ITEM_DEKU_NUT) { if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { - Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 1); + Inventory_ChangeUpgrade(UPG_DEKU_NUTS, UPG_DEKU_NUTS_20); AMMO(ITEM_DEKU_NUT) = ITEM_DEKU_NUT; } else { AMMO(ITEM_DEKU_NUT)++; @@ -1641,7 +1641,7 @@ u8 Item_Give(PlayState* play, u8 item) { } } else if ((item == ITEM_DEKU_NUTS_5) || (item == ITEM_DEKU_NUTS_10)) { if (gSaveContext.save.info.inventory.items[slot] == ITEM_NONE) { - Inventory_ChangeUpgrade(UPG_DEKU_NUTS, 1); + Inventory_ChangeUpgrade(UPG_DEKU_NUTS, UPG_DEKU_NUTS_20); AMMO(ITEM_DEKU_NUT) += sAmmoRefillCounts[item - ITEM_DEKU_NUTS_5]; PRINTF(T("デクの実 %d(%d)=%d BS_count=%d\n", "Deku Nuts %d(%d)=%d BS_count=%d\n"), item, ITEM_DEKU_NUTS_5, item - ITEM_DEKU_NUTS_5, sAmmoRefillCounts[item - ITEM_DEKU_NUTS_5]); @@ -1696,7 +1696,7 @@ u8 Item_Give(PlayState* play, u8 item) { return ITEM_BOW; } else if (item == ITEM_SLINGSHOT) { - Inventory_ChangeUpgrade(UPG_BULLET_BAG, 1); + Inventory_ChangeUpgrade(UPG_BULLET_BAG, UPG_BULLET_BAG_NORMAL); INV_CONTENT(ITEM_SLINGSHOT) = ITEM_SLINGSHOT; AMMO(ITEM_SLINGSHOT) = 30; return ITEM_NONE; @@ -1938,7 +1938,7 @@ u8 Item_CheckObtainability(u8 item) { } else if ((item == ITEM_BOMBCHUS_5) || (item == ITEM_BOMBCHUS_20)) { return ITEM_NONE; } else if ((item == ITEM_QUIVER_30) || (item == ITEM_BOW)) { - if (CUR_UPG_VALUE(UPG_QUIVER) == 0) { + if (CUR_UPG_VALUE(UPG_QUIVER) == UPG_QUIVER_NONE) { return ITEM_NONE; } else { return 0; @@ -1948,7 +1948,7 @@ u8 Item_CheckObtainability(u8 item) { } else if ((item == ITEM_BULLET_BAG_40) || (item == ITEM_BULLET_BAG_50)) { return ITEM_NONE; } else if ((item == ITEM_BOMB_BAG_20) || (item == ITEM_BOMB)) { - if (CUR_UPG_VALUE(UPG_BOMB_BAG) == 0) { + if (CUR_UPG_VALUE(UPG_BOMB_BAG) == UPG_BOMB_BAG_NONE) { return ITEM_NONE; } else { return 0; @@ -3186,8 +3186,16 @@ void Interface_Draw(PlayState* play) { static s16 D_80125B1C[][3] = { { 0, 150, 0 }, { 100, 255, 0 }, { 255, 255, 255 }, { 0, 0, 0 }, { 255, 255, 255 }, }; - static s16 rupeeDigitsFirst[] = { 1, 0, 0 }; - static s16 rupeeDigitsCount[] = { 2, 3, 3 }; + static s16 rupeeDigitsFirst[] = { + 1, // UPG_WALLET_CHILD + 0, // UPG_WALLET_ADULT + 0 // UPG_WALLET_GIANT + }; + static s16 rupeeDigitsCount[] = { + 2, // UPG_WALLET_CHILD + 3, // UPG_WALLET_ADULT + 3 // UPG_WALLET_GIANT + }; static s16 spoilingItemEntrances[] = { ENTR_LOST_WOODS_2, ENTR_ZORAS_DOMAIN_3, ENTR_ZORAS_DOMAIN_3 }; static f32 D_80125B54[] = { -40.0f, -35.0f }; // unused static s16 D_80125B5C[] = { 91, 91 }; // unused diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index d56eb84102..cdb6976f5a 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -815,7 +815,7 @@ s32 Player_GetStrength(void) { if (LINK_IS_ADULT) { return strengthUpgrade; - } else if (strengthUpgrade != 0) { + } else if (strengthUpgrade != UPG_STRENGTH_NONE) { return PLAYER_STR_BRACELET; } else { return PLAYER_STR_NONE; @@ -1132,10 +1132,10 @@ void Player_DrawImpl(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dL if (LINK_IS_ADULT) { s32 strengthUpgrade = CUR_UPG_VALUE(UPG_STRENGTH); - if (strengthUpgrade >= 2) { // silver or gold gauntlets + if (strengthUpgrade >= UPG_STRENGTH_SILVER_GAUNTLETS) { gDPPipeSync(POLY_OPA_DISP++); - color = &sGauntletColors[strengthUpgrade - 2]; + color = &sGauntletColors[strengthUpgrade - UPG_STRENGTH_SILVER_GAUNTLETS]; gDPSetEnvColor(POLY_OPA_DISP++, color->r, color->g, color->b, 0); gSPDisplayList(POLY_OPA_DISP++, gLinkAdultLeftGauntletPlate1DL); diff --git a/src/code/z_sram.c b/src/code/z_sram.c index c1a514a94b..3ba7833e5c 100644 --- a/src/code/z_sram.c +++ b/src/code/z_sram.c @@ -185,7 +185,16 @@ static Inventory sNewSaveInventory = { // equipment (((1 << EQUIP_INV_TUNIC_KOKIRI) << (EQUIP_TYPE_TUNIC * 4)) | ((1 << EQUIP_INV_BOOTS_KOKIRI) << (EQUIP_TYPE_BOOTS * 4))), - 0, // upgrades + GET_PACKED_UPGRADES_VALUE( + UPG_QUIVER_NONE, + UPG_BOMB_BAG_NONE, + UPG_STRENGTH_NONE, + UPG_SCALE_NONE, + UPG_WALLET_CHILD, + UPG_BULLET_BAG_NONE, + UPG_DEKU_STICKS_NONE, + UPG_DEKU_NUTS_NONE + ), // upgrades 0, // questItems { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // dungeonItems { @@ -345,7 +354,16 @@ static Inventory sDebugSaveInventory = { (((1 << EQUIP_INV_BOOTS_KOKIRI) << (EQUIP_TYPE_BOOTS * 4)) | ((1 << EQUIP_INV_BOOTS_IRON) << (EQUIP_TYPE_BOOTS * 4)) | ((1 << EQUIP_INV_BOOTS_HOVER) << (EQUIP_TYPE_BOOTS * 4)))), - 0x125249, // upgrades + GET_PACKED_UPGRADES_VALUE( + UPG_QUIVER_NORMAL, + UPG_BOMB_BAG_NORMAL, + UPG_STRENGTH_GORON_BRACELET, + UPG_SCALE_SILVER, + UPG_WALLET_ADULT, + UPG_BULLET_BAG_NORMAL, + UPG_DEKU_STICKS_10, + UPG_DEKU_NUTS_20 + ), // upgrades 0x1E3FFFF, // questItems { 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // dungeonItems { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 }, // dungeonKeys diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c index ef9ada2258..e73a914357 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -410,13 +410,13 @@ void EnDns_Talk(EnDns* this, PlayState* play) { void EnDns_OfferSaleItem(EnDns* this, PlayState* play) { if (DNS_GET_TYPE(&this->actor) == DNS_TYPE_DEKU_STICK_UPGRADE) { - if (CUR_UPG_VALUE(UPG_DEKU_STICKS) < 2) { + if (CUR_UPG_VALUE(UPG_DEKU_STICKS) < UPG_DEKU_STICKS_20) { Actor_OfferGetItem(&this->actor, play, GI_DEKU_STICK_UPGRADE_20, 130.0f, 100.0f); } else { Actor_OfferGetItem(&this->actor, play, GI_DEKU_STICK_UPGRADE_30, 130.0f, 100.0f); } } else if (DNS_GET_TYPE(&this->actor) == DNS_TYPE_DEKU_NUT_UPGRADE) { - if (CUR_UPG_VALUE(UPG_DEKU_NUTS) < 2) { + if (CUR_UPG_VALUE(UPG_DEKU_NUTS) < UPG_DEKU_NUTS_30) { Actor_OfferGetItem(&this->actor, play, GI_DEKU_NUT_UPGRADE_30, 130.0f, 100.0f); } else { Actor_OfferGetItem(&this->actor, play, GI_DEKU_NUT_UPGRADE_40, 130.0f, 100.0f); diff --git a/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c b/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c index 1bcb628f92..dcc459fea8 100644 --- a/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c +++ b/src/overlays/actors/ovl_En_Dnt_Jiji/z_en_dnt_jiji.c @@ -205,7 +205,7 @@ void EnDntJiji_Walk(EnDntJiji* this, PlayState* play) { this->actor.speed = 3.0f; } if (this->actor.xzDistToPlayer < 100.0f) { - if (CUR_UPG_VALUE(UPG_DEKU_STICKS) == 1) { + if (CUR_UPG_VALUE(UPG_DEKU_STICKS) == UPG_DEKU_STICKS_10) { this->getItemId = GI_DEKU_STICK_UPGRADE_20; } else { this->getItemId = GI_DEKU_STICK_UPGRADE_30; @@ -237,7 +237,7 @@ void EnDntJiji_SetupCower(EnDntJiji* this, PlayState* play) { EffectSsHahen_SpawnBurst(play, &this->actor.world.pos, 3.0f, 0, 9, 3, 10, HAHEN_OBJECT_DEFAULT, 10, NULL); Actor_PlaySfx(&this->actor, NA_SE_EN_NUTS_UP); - if ((CUR_UPG_VALUE(UPG_DEKU_NUTS) == 1) || (CUR_UPG_VALUE(UPG_DEKU_NUTS) == 0)) { + if ((CUR_UPG_VALUE(UPG_DEKU_NUTS) == UPG_DEKU_NUTS_20) || (CUR_UPG_VALUE(UPG_DEKU_NUTS) == UPG_DEKU_NUTS_NONE)) { this->getItemId = GI_DEKU_NUT_UPGRADE_30; } else { this->getItemId = GI_DEKU_NUT_UPGRADE_40; diff --git a/src/overlays/actors/ovl_En_Du/z_en_du.c b/src/overlays/actors/ovl_En_Du/z_en_du.c index ac71becd07..d98ccf1584 100644 --- a/src/overlays/actors/ovl_En_Du/z_en_du.c +++ b/src/overlays/actors/ovl_En_Du/z_en_du.c @@ -117,7 +117,7 @@ u16 EnDu_GetTextId(PlayState* play, Actor* actor) { if (textId != 0) { return textId; } - if (CUR_UPG_VALUE(UPG_STRENGTH) != 0) { + if (CUR_UPG_VALUE(UPG_STRENGTH) != UPG_STRENGTH_NONE) { if (CHECK_QUEST_ITEM(QUEST_GORON_RUBY)) { return 0x301E; } else { @@ -522,7 +522,7 @@ void func_809FEB08(EnDu* this, PlayState* play) { EnDu_SetupAction(this, func_809FE3C0); return; } - if (CUR_UPG_VALUE(UPG_STRENGTH) <= 0) { + if (CUR_UPG_VALUE(UPG_STRENGTH) < UPG_STRENGTH_GORON_BRACELET) { this->actor.textId = 0x301C; EnDu_SetupAction(this, func_809FEC14); } else { diff --git a/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c b/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c index 6c232529e7..e1716c02a4 100644 --- a/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c +++ b/src/overlays/actors/ovl_En_Ex_Item/z_en_ex_item.c @@ -405,7 +405,7 @@ void EnExItem_TargetPrizeApproach(EnExItem* this, PlayState* play) { this->actor.draw = NULL; Player_SetCsActionWithHaltedActors(play, NULL, PLAYER_CSACTION_7); this->actor.parent = NULL; - if (CUR_UPG_VALUE(UPG_BULLET_BAG) == 1) { + if (CUR_UPG_VALUE(UPG_BULLET_BAG) == UPG_BULLET_BAG_NORMAL) { getItemId = GI_BULLET_BAG_40; } else { getItemId = GI_BULLET_BAG_50; @@ -421,7 +421,7 @@ void EnExItem_TargetPrizeGive(EnExItem* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actionFunc = EnExItem_TargetPrizeFinish; } else { - getItemId = (CUR_UPG_VALUE(UPG_BULLET_BAG) == 2) ? GI_BULLET_BAG_50 : GI_BULLET_BAG_40; + getItemId = (CUR_UPG_VALUE(UPG_BULLET_BAG) == UPG_BULLET_BAG_BIG) ? GI_BULLET_BAG_50 : GI_BULLET_BAG_40; Actor_OfferGetItem(&this->actor, play, getItemId, 2000.0f, 1000.0f); } diff --git a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c index cf3a74c292..3a859a9253 100644 --- a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c +++ b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c @@ -516,10 +516,10 @@ void EnGe1_WaitTillItemGiven_Archery(EnGe1* this, PlayState* play) { if (this->stateFlags & GE1_STATE_GIVE_QUIVER) { switch (CUR_UPG_VALUE(UPG_QUIVER)) { //! @bug Asschest. See next function for details - case 1: + case UPG_QUIVER_NORMAL: getItemId = GI_QUIVER_40; break; - case 2: + case UPG_QUIVER_BIG: getItemId = GI_QUIVER_50; break; } @@ -544,10 +544,10 @@ void EnGe1_BeginGiveItem_Archery(EnGe1* this, PlayState* play) { //! over from the previous function run in EnGe1_Update, namely EnGe1_CueUpAnimation. The top stack variable //! in that function is &this->skelAnime = thisx + 198, and depending on where this loads in memory, the //! getItemId changes. - case 1: + case UPG_QUIVER_NORMAL: getItemId = GI_QUIVER_40; break; - case 2: + case UPG_QUIVER_BIG: getItemId = GI_QUIVER_50; break; } diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.c b/src/overlays/actors/ovl_En_Go/z_en_go.c index 733c8519aa..a630ff2797 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.c +++ b/src/overlays/actors/ovl_En_Go/z_en_go.c @@ -275,7 +275,7 @@ s16 EnGo_UpdateTalkState(PlayState* play, Actor* thisx) { switch (thisx->textId) { case 0x300A: if (play->msgCtx.choiceIndex == 0) { - if (CUR_UPG_VALUE(UPG_STRENGTH) != 0 || GET_INFTABLE(INFTABLE_EB)) { + if (CUR_UPG_VALUE(UPG_STRENGTH) != UPG_STRENGTH_NONE || GET_INFTABLE(INFTABLE_EB)) { thisx->textId = 0x300B; } else { thisx->textId = 0x300C; diff --git a/src/overlays/actors/ovl_En_Go2/z_en_go2.c b/src/overlays/actors/ovl_En_Go2/z_en_go2.c index 6718a23b64..2f9fe7e337 100644 --- a/src/overlays/actors/ovl_En_Go2/z_en_go2.c +++ b/src/overlays/actors/ovl_En_Go2/z_en_go2.c @@ -383,7 +383,7 @@ s16 EnGo2_UpdateTalkStateGoronDmtBombFlower(PlayState* play, EnGo2* this) { // Ask question to DMT Goron by bomb flower if (this->actor.textId == 0x300A) { if (play->msgCtx.choiceIndex == 0) { - this->actor.textId = CUR_UPG_VALUE(UPG_STRENGTH) != 0 ? 0x300B : 0x300C; + this->actor.textId = CUR_UPG_VALUE(UPG_STRENGTH) != UPG_STRENGTH_NONE ? 0x300B : 0x300C; } else { this->actor.textId = 0x300D; } @@ -482,10 +482,10 @@ u16 EnGo2_GetTextIdGoronCityLowestFloor(PlayState* play, EnGo2* this) { } else if (CHECK_QUEST_ITEM(QUEST_GORON_RUBY)) { return 0x3027; } else { - return CUR_UPG_VALUE(UPG_STRENGTH) != 0 ? 0x302C - : !Flags_GetSwitch(play, 0x1B) ? 0x3017 - : GET_INFTABLE(INFTABLE_F8) ? 0x3019 - : 0x3018; + return CUR_UPG_VALUE(UPG_STRENGTH) != UPG_STRENGTH_NONE ? 0x302C + : !Flags_GetSwitch(play, 0x1B) ? 0x3017 + : GET_INFTABLE(INFTABLE_F8) ? 0x3019 + : 0x3018; } } diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index 7b6656b50b..0d9c0fddb3 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -536,7 +536,7 @@ void EnOssan_TalkGoronShopkeeper(PlayState* play) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) { if (GET_EVENTCHKINF(EVENTCHKINF_25)) { Message_ContinueTextbox(play, 0x3028); - } else if (CUR_UPG_VALUE(UPG_STRENGTH) != 0) { + } else if (CUR_UPG_VALUE(UPG_STRENGTH) != UPG_STRENGTH_NONE) { Message_ContinueTextbox(play, 0x302D); } else { Message_ContinueTextbox(play, 0x300F); diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/src/overlays/actors/ovl_En_Sth/z_en_sth.c index e69aede4ed..90decd8602 100644 --- a/src/overlays/actors/ovl_En_Sth/z_en_sth.c +++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.c @@ -247,11 +247,11 @@ void EnSth_GivePlayerItem(EnSth* this, PlayState* play) { case 1: case 3: switch (CUR_UPG_VALUE(UPG_WALLET)) { - case 0: + case UPG_WALLET_CHILD: getItemId = GI_WALLET_ADULT; break; - case 1: + case UPG_WALLET_ADULT: getItemId = GI_WALLET_GIANT; break; } diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 3c983d700f..0f68c200ec 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -360,7 +360,7 @@ void EnSyatekiMan_EndGame(EnSyatekiMan* this, PlayState* play) { if (!GET_ITEMGETINF(ITEMGETINF_0D)) { PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ Equip_Pachinko ☆☆☆☆☆ %d\n" VT_RST, CUR_UPG_VALUE(UPG_BULLET_BAG)); - if (CUR_UPG_VALUE(UPG_BULLET_BAG) == 1) { + if (CUR_UPG_VALUE(UPG_BULLET_BAG) == UPG_BULLET_BAG_NORMAL) { this->getItemId = GI_BULLET_BAG_40; } else { this->getItemId = GI_BULLET_BAG_50; @@ -372,13 +372,13 @@ void EnSyatekiMan_EndGame(EnSyatekiMan* this, PlayState* play) { if (!GET_ITEMGETINF(ITEMGETINF_0E)) { PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ Equip_Bow ☆☆☆☆☆ %d\n" VT_RST, CUR_UPG_VALUE(UPG_QUIVER)); switch (CUR_UPG_VALUE(UPG_QUIVER)) { - case 0: + case UPG_QUIVER_NONE: this->getItemId = GI_RUPEE_PURPLE; break; - case 1: + case UPG_QUIVER_NORMAL: this->getItemId = GI_QUIVER_40; break; - case 2: + case UPG_QUIVER_BIG: this->getItemId = GI_QUIVER_50; break; } diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 0fe5048f20..3bf573862e 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -10888,7 +10888,11 @@ void func_80847298(Player* this) { this->unk_6AE_rotFlags = 0; } -static f32 D_80854784[] = { 120.0f, 240.0f, 360.0f }; +static f32 sDiveDepths[] = { + 120.0f, // UPG_SCALE_NONE + 240.0f, // UPG_SCALE_SILVER + 360.0f // UPG_SCALE_GOLD +}; /** * Updates the two main interface elements that player is responsible for: @@ -10970,7 +10974,7 @@ void Player_UpdateInterface(PlayState* play, Player* this) { static u8 sDiveNumberDoActions[] = { DO_ACTION_1, DO_ACTION_2, DO_ACTION_3, DO_ACTION_4, DO_ACTION_5, DO_ACTION_6, DO_ACTION_7, DO_ACTION_8 }; - sp24 = (D_80854784[CUR_UPG_VALUE(UPG_SCALE)] - this->actor.depthInWater) / 40.0f; + sp24 = (sDiveDepths[CUR_UPG_VALUE(UPG_SCALE)] - this->actor.depthInWater) / 40.0f; sp24 = CLAMP(sp24, 0, 7); doAction = sDiveNumberDoActions[sp24]; } else if (sp1C && !(this->stateFlags2 & PLAYER_STATE2_10)) { @@ -13637,7 +13641,7 @@ void Player_Action_8084DC48(Player* this, PlayState* play) { if (CHECK_BTN_ALL(sControlInput->cur.button, BTN_A) && !Player_ActionHandler_2(this, play) && !(this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) && - (this->actor.depthInWater < D_80854784[CUR_UPG_VALUE(UPG_SCALE)])) { + (this->actor.depthInWater < sDiveDepths[CUR_UPG_VALUE(UPG_SCALE)])) { func_8084DBC4(play, this, -2.0f); } else { this->av1.actionVar1++; diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c index 1ac3237125..c6ab70351a 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_equipment.c @@ -239,7 +239,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) { if (pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_CURSOR_X_UPG) { if (pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) { //! @bug Assumes adult always has bullet bag (as adult this should rely on `UPG_QUIVER`) - if (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0) { + if (CUR_UPG_VALUE(UPG_BULLET_BAG) != UPG_BULLET_BAG_NONE) { cursorMoveResult = 1; } } else { @@ -329,7 +329,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) { if (pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_CURSOR_X_UPG) { if (pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) { - if (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0) { + if (CUR_UPG_VALUE(UPG_BULLET_BAG) != UPG_BULLET_BAG_NONE) { cursorMoveResult = 1; } } else { @@ -383,7 +383,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) { while (true) { if (cursorX == EQUIP_CURSOR_X_UPG) { if (cursorY == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) { - if (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0) { + if (CUR_UPG_VALUE(UPG_BULLET_BAG) != UPG_BULLET_BAG_NONE) { pauseCtx->cursorPoint[PAUSE_EQUIP] = cursorPoint; pauseCtx->cursorX[PAUSE_EQUIP] = cursorX; pauseCtx->cursorY[PAUSE_EQUIP] = cursorY; @@ -466,7 +466,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) { if ((pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) && - (CUR_UPG_VALUE(UPG_BULLET_BAG) != 0)) { + (CUR_UPG_VALUE(UPG_BULLET_BAG) != UPG_BULLET_BAG_NONE)) { cursorItem = ITEM_BULLET_BAG_30 + CUR_UPG_VALUE(UPG_BULLET_BAG) - 1; } else { cursorItem = ITEM_QUIVER_30 + sUpgradeItemOffsets[pauseCtx->cursorY[PAUSE_EQUIP]] + @@ -475,7 +475,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) { } } else { if ((pauseCtx->cursorY[PAUSE_EQUIP] == EQUIP_CURSOR_Y_BULLETBAG_QUIVER) && - (CUR_UPG_VALUE(UPG_QUIVER) == 0)) { + (CUR_UPG_VALUE(UPG_QUIVER) == UPG_QUIVER_NONE)) { cursorItem = ITEM_BULLET_BAG_30 + CUR_UPG_VALUE(UPG_BULLET_BAG) - 1; } else { cursorItem = ITEM_QUIVER_30 + sUpgradeItemOffsets[pauseCtx->cursorY[PAUSE_EQUIP]] + diff --git a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c index f43b3d627c..f08ee4ecc8 100644 --- a/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c +++ b/src/overlays/misc/ovl_kaleido_scope/z_kaleido_scope.c @@ -3916,7 +3916,7 @@ void KaleidoScope_Update(PlayState* play) { pauseCtx->worldMapPoints[WORLD_MAP_POINT_GERUDO_VALLEY] = WORLD_MAP_POINT_STATE_SHOW; } - if (CUR_UPG_VALUE(UPG_SCALE)) { + if (CUR_UPG_VALUE(UPG_SCALE) != UPG_SCALE_NONE) { pauseCtx->worldMapPoints[WORLD_MAP_POINT_LAKE_HYLIA] = WORLD_MAP_POINT_STATE_SHOW; } if (CHECK_OWNED_EQUIP(EQUIP_TYPE_BOOTS, EQUIP_INV_BOOTS_IRON)) {