From cf8f5a80b13c4edd7fd8ebb33ab0de81d64f609b Mon Sep 17 00:00:00 2001 From: Yanis <35189056+Yanis002@users.noreply.github.com> Date: Tue, 22 Jul 2025 16:17:02 +0200 Subject: Decompile more of `AdventureFlags.cpp` (#118) * fix flags getters and associated relocs * explicit ARM and improve existing matches * match CopyTo * document a bit the flag system and progress on unmatched functions * remaining bottom functions * func_ov00_02097810 params and name fix * fix build issues * move flag base definition to its own file * document item flags --------- Co-authored-by: Yanis002 Co-authored-by: Aetias --- include/Item/Item.hpp | 139 +++++++++++++++++++++++++------------------------- 1 file changed, 70 insertions(+), 69 deletions(-) (limited to 'include/Item') diff --git a/include/Item/Item.hpp b/include/Item/Item.hpp index 36f5a9ca..32a14a30 100644 --- a/include/Item/Item.hpp +++ b/include/Item/Item.hpp @@ -1,5 +1,6 @@ #pragma once +#include "flags.h" #include "types.h" #define MAX_POTIONS 2 @@ -7,86 +8,86 @@ typedef s32 ItemFlag; enum ItemFlag_ { ItemFlag_None = -1, - /* 0x00 */ ItemFlag_OshusSword = 0, - /* 0x01 */ ItemFlag_WoodenShield = 1, - /* 0x02 */ ItemFlag_Boomerang = 2, - /* 0x03 */ ItemFlag_Shovel = 3, - /* 0x04 */ ItemFlag_BombBag = 4, - /* 0x05 */ ItemFlag_Bow = 5, - /* 0x06 */ ItemFlag_GrapplingHook = 6, - /* 0x07 */ ItemFlag_BombchuBag = 7, - /* 0x08 */ ItemFlag_Hammer = 8, - /* 0x09 */ ItemFlag_PotionA = 9, - /* 0x0a */ ItemFlag_PotionB = 10, + /* 0x00 */ ItemFlag_OshusSword = FLAG(0, 0), + /* 0x01 */ ItemFlag_WoodenShield = FLAG(0, 1), + /* 0x02 */ ItemFlag_Boomerang = FLAG(0, 2), + /* 0x03 */ ItemFlag_Shovel = FLAG(0, 3), + /* 0x04 */ ItemFlag_BombBag = FLAG(0, 4), + /* 0x05 */ ItemFlag_Bow = FLAG(0, 5), + /* 0x06 */ ItemFlag_GrapplingHook = FLAG(0, 6), + /* 0x07 */ ItemFlag_BombchuBag = FLAG(0, 7), + /* 0x08 */ ItemFlag_Hammer = FLAG(0, 8), + /* 0x09 */ ItemFlag_PotionA = FLAG(0, 9), + /* 0x0a */ ItemFlag_PotionB = FLAG(0, 10), ItemFlag_EQUIP_START = ItemFlag_OshusSword, ItemFlag_EQUIP_END = ItemFlag_PotionB + 1, ItemFlag_EQUIP_COUNT = ItemFlag_EQUIP_END - ItemFlag_EQUIP_START, - /* 0x14 */ ItemFlag_SpiritOfCourage = 20, - /* 0x15 */ ItemFlag_SpiritOfPower = 21, - /* 0x16 */ ItemFlag_SpiritOfWisdom = 22, - /* 0x17 */ ItemFlag_CourageLv1 = 23, - /* 0x18 */ ItemFlag_PowerLv1 = 24, - /* 0x19 */ ItemFlag_WisdomLv1 = 25, + /* 0x14 */ ItemFlag_SpiritOfCourage = FLAG(0, 20), + /* 0x15 */ ItemFlag_SpiritOfPower = FLAG(0, 21), + /* 0x16 */ ItemFlag_SpiritOfWisdom = FLAG(0, 22), + /* 0x17 */ ItemFlag_CourageLv1 = FLAG(0, 23), + /* 0x18 */ ItemFlag_PowerLv1 = FLAG(0, 24), + /* 0x19 */ ItemFlag_WisdomLv1 = FLAG(0, 25), ItemFlag_FAIRY_LV1 = ItemFlag_CourageLv1, - /* 0x1a */ ItemFlag_CourageLv2 = 26, - /* 0x1b */ ItemFlag_PowerLv2 = 27, - /* 0x1c */ ItemFlag_WisdomLv2 = 28, + /* 0x1a */ ItemFlag_CourageLv2 = FLAG(0, 26), + /* 0x1b */ ItemFlag_PowerLv2 = FLAG(0, 27), + /* 0x1c */ ItemFlag_WisdomLv2 = FLAG(0, 28), ItemFlag_FAIRY_LV2 = ItemFlag_CourageLv2, - /* 0x20 */ ItemFlag_Hourglass = 32, - /* 0x21 */ ItemFlag_SeaChartSW = 33, - /* 0x22 */ ItemFlag_SeaChartNW = 34, - /* 0x23 */ ItemFlag_SeaChartSE = 35, - /* 0x24 */ ItemFlag_SeaChartNE = 36, - /* 0x25 */ ItemFlag_PhantomSword = 37, - /* 0x26 */ ItemFlag_SunKey = 38, - /* 0x27 */ ItemFlag_Unk_39 = 39, - /* 0x28 */ ItemFlag_FishingRod = 40, - /* 0x29 */ ItemFlag_Cannon = 41, - /* 0x2a */ ItemFlag_KingsKey = 42, - /* 0x2b */ ItemFlag_GhostKey = 43, - /* 0x2c */ ItemFlag_SalvageArm = 44, + /* 0x20 */ ItemFlag_Hourglass = FLAG(1, 0), + /* 0x21 */ ItemFlag_SeaChartSW = FLAG(1, 1), + /* 0x22 */ ItemFlag_SeaChartNW = FLAG(1, 2), + /* 0x23 */ ItemFlag_SeaChartSE = FLAG(1, 3), + /* 0x24 */ ItemFlag_SeaChartNE = FLAG(1, 4), + /* 0x25 */ ItemFlag_PhantomSword = FLAG(1, 5), + /* 0x26 */ ItemFlag_SunKey = FLAG(1, 6), + /* 0x27 */ ItemFlag_Unk_39 = FLAG(1, 7), + /* 0x28 */ ItemFlag_FishingRod = FLAG(1, 8), + /* 0x29 */ ItemFlag_Cannon = FLAG(1, 9), + /* 0x2a */ ItemFlag_KingsKey = FLAG(1, 10), + /* 0x2b */ ItemFlag_GhostKey = FLAG(1, 11), + /* 0x2c */ ItemFlag_SalvageArm = FLAG(1, 12), - /* 0x2d */ ItemFlag_SwordsmansScroll = 45, - /* 0x2e */ ItemFlag_CycloneSlate = 46, - /* 0x2f */ ItemFlag_BigCatchLure = 47, + /* 0x2d */ ItemFlag_SwordsmansScroll = FLAG(1, 13), + /* 0x2e */ ItemFlag_CycloneSlate = FLAG(1, 14), + /* 0x2f */ ItemFlag_BigCatchLure = FLAG(1, 15), - /* 0x60 */ ItemFlag_TreasureChart1 = 96, - /* 0x61 */ ItemFlag_TreasureChart2 = 97, - /* 0x62 */ ItemFlag_TreasureChart3 = 98, - /* 0x63 */ ItemFlag_TreasureChart4 = 99, - /* 0x64 */ ItemFlag_TreasureChart5 = 100, - /* 0x65 */ ItemFlag_TreasureChart6 = 101, - /* 0x66 */ ItemFlag_TreasureChart7 = 102, - /* 0x67 */ ItemFlag_TreasureChart8 = 103, - /* 0x68 */ ItemFlag_TreasureChart9 = 104, - /* 0x69 */ ItemFlag_TreasureChart10 = 105, - /* 0x6a */ ItemFlag_TreasureChart11 = 106, - /* 0x6b */ ItemFlag_TreasureChart12 = 107, - /* 0x6c */ ItemFlag_TreasureChart13 = 108, - /* 0x6d */ ItemFlag_TreasureChart14 = 109, - /* 0x6e */ ItemFlag_TreasureChart15 = 110, - /* 0x6f */ ItemFlag_TreasureChart16 = 111, - /* 0x70 */ ItemFlag_TreasureChart17 = 112, - /* 0x71 */ ItemFlag_TreasureChart18 = 113, - /* 0x72 */ ItemFlag_TreasureChart19 = 114, - /* 0x73 */ ItemFlag_TreasureChart20 = 115, - /* 0x74 */ ItemFlag_TreasureChart21 = 116, - /* 0x75 */ ItemFlag_TreasureChart22 = 117, - /* 0x76 */ ItemFlag_TreasureChart23 = 118, - /* 0x77 */ ItemFlag_TreasureChart24 = 119, - /* 0x78 */ ItemFlag_TreasureChart25 = 120, - /* 0x79 */ ItemFlag_TreasureChart26 = 121, - /* 0x7a */ ItemFlag_TreasureChart27 = 122, - /* 0x7b */ ItemFlag_TreasureChart28 = 123, - /* 0x7c */ ItemFlag_TreasureChart29 = 124, - /* 0x7d */ ItemFlag_TreasureChart30 = 125, - /* 0x7e */ ItemFlag_TreasureChart31 = 126, - /* 0x7f */ ItemFlag_TreasureChart32 = 127, + /* 0x60 */ ItemFlag_TreasureChart1 = FLAG(3, 0), + /* 0x61 */ ItemFlag_TreasureChart2 = FLAG(3, 1), + /* 0x62 */ ItemFlag_TreasureChart3 = FLAG(3, 2), + /* 0x63 */ ItemFlag_TreasureChart4 = FLAG(3, 3), + /* 0x64 */ ItemFlag_TreasureChart5 = FLAG(3, 4), + /* 0x65 */ ItemFlag_TreasureChart6 = FLAG(3, 5), + /* 0x66 */ ItemFlag_TreasureChart7 = FLAG(3, 6), + /* 0x67 */ ItemFlag_TreasureChart8 = FLAG(3, 7), + /* 0x68 */ ItemFlag_TreasureChart9 = FLAG(3, 8), + /* 0x69 */ ItemFlag_TreasureChart10 = FLAG(3, 9), + /* 0x6a */ ItemFlag_TreasureChart11 = FLAG(3, 10), + /* 0x6b */ ItemFlag_TreasureChart12 = FLAG(3, 11), + /* 0x6c */ ItemFlag_TreasureChart13 = FLAG(3, 12), + /* 0x6d */ ItemFlag_TreasureChart14 = FLAG(3, 13), + /* 0x6e */ ItemFlag_TreasureChart15 = FLAG(3, 14), + /* 0x6f */ ItemFlag_TreasureChart16 = FLAG(3, 15), + /* 0x70 */ ItemFlag_TreasureChart17 = FLAG(3, 16), + /* 0x71 */ ItemFlag_TreasureChart18 = FLAG(3, 17), + /* 0x72 */ ItemFlag_TreasureChart19 = FLAG(3, 18), + /* 0x73 */ ItemFlag_TreasureChart20 = FLAG(3, 19), + /* 0x74 */ ItemFlag_TreasureChart21 = FLAG(3, 20), + /* 0x75 */ ItemFlag_TreasureChart22 = FLAG(3, 21), + /* 0x76 */ ItemFlag_TreasureChart23 = FLAG(3, 22), + /* 0x77 */ ItemFlag_TreasureChart24 = FLAG(3, 23), + /* 0x78 */ ItemFlag_TreasureChart25 = FLAG(3, 24), + /* 0x79 */ ItemFlag_TreasureChart26 = FLAG(3, 25), + /* 0x7a */ ItemFlag_TreasureChart27 = FLAG(3, 26), + /* 0x7b */ ItemFlag_TreasureChart28 = FLAG(3, 27), + /* 0x7c */ ItemFlag_TreasureChart29 = FLAG(3, 28), + /* 0x7d */ ItemFlag_TreasureChart30 = FLAG(3, 29), + /* 0x7e */ ItemFlag_TreasureChart31 = FLAG(3, 30), + /* 0x7f */ ItemFlag_TreasureChart32 = FLAG(3, 31), ItemFlag_TREASURE_CHART_START = ItemFlag_TreasureChart1, - ItemFlag_COUNT = 128, + ItemFlag_COUNT = FLAG(4, 0), }; typedef s32 ItemId; -- cgit v1.2.3