summaryrefslogtreecommitdiff
path: root/include/Save
diff options
context:
space:
mode:
authorYanis <35189056+Yanis002@users.noreply.github.com>2025-07-22 16:17:02 +0200
committerGitHub <noreply@github.com>2025-07-22 16:17:02 +0200
commitcf8f5a80b13c4edd7fd8ebb33ab0de81d64f609b (patch)
treea9ec152f01d7fa0760aa26a69dec69b4c77dce86 /include/Save
parent383ca6aaa2b322869fe304eb5c277150859bfcc0 (diff)
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 <Yanis002@users.noreply.github.com> Co-authored-by: Aetias <aetias@outlook.com>
Diffstat (limited to 'include/Save')
-rw-r--r--include/Save/AdventureFlags.hpp164
1 files changed, 103 insertions, 61 deletions
diff --git a/include/Save/AdventureFlags.hpp b/include/Save/AdventureFlags.hpp
index 33f7c578..e7619e8d 100644
--- a/include/Save/AdventureFlags.hpp
+++ b/include/Save/AdventureFlags.hpp
@@ -1,5 +1,6 @@
#pragma once
+#include "flags.h"
#include "global.h"
#include "types.h"
@@ -9,52 +10,47 @@
typedef u32 AdventureFlag;
enum AdventureFlag_ {
- /* 0x09 */ AdventureFlag_SWSeaChart = 9,
- /* 0x0a */ AdventureFlag_NWSeaChart = 10,
- /* 0x0b */ AdventureFlag_SESeaChart = 11,
- /* 0x0c */ AdventureFlag_NESeaChart = 12,
-
- /* 0x13 */ AdventureFlag_Hourglass = 19,
-
- /* 0x16 */ AdventureFlag_SunKey = 22,
- /* 0x17 */ AdventureFlag_Unk_23 = 23,
-
- /* 0x2b */ AdventureFlag_FishingRod = 43,
-
- /* 0x30 */ AdventureFlag_Cannon = 48,
-
- /* 0x33 */ AdventureFlag_RegalNecklace = 51,
-
- /* 0x7a */ AdventureFlag_CourageCrest = 122,
-
- /* 0x7d */ AdventureFlag_Azurine = 125,
- /* 0x7e */ AdventureFlag_Crimsonine = 126,
- /* 0x7f */ AdventureFlag_Aquanine = 127,
- /* 0x80 */ AdventureFlag_Unk_128 = 128,
-
- /* 0x8c */ AdventureFlag_SalvageArm = 140,
-
- /* 0xa2 */ AdvantureFlag_HerosNewClothes = 162,
- /* 0xa3 */ AdvantureFlag_Kaleidoscope = 163,
- /* 0xa4 */ AdventureFlag_GuardNotebook = 164,
-
- /* 0xa7 */ AdventureFlag_WoodHeart = 167,
-
- /* 0xb6 */ AdventureFlag_SpawnFinalPhantoms = 182,
-
- /* 0x126 */ AdventureFlag_ReceivedGoldenChimney = 294,
- /* 0x127 */ AdventureFlag_ReceivedGoldenHandrail = 295,
- /* 0x128 */ AdventureFlag_ReceivedGoldenCannon = 296,
- /* 0x129 */ AdventureFlag_ReceivedGoldenHull = 297,
-
- /* 0x137 */ AdventureFlag_FrogGlyph_MercayIsland = 311,
- /* 0x138 */ AdventureFlag_FrogGlyph_MolidaIsland = 312,
- /* 0x139 */ AdventureFlag_FrogGlyph_BannanIsland = 313,
- /* 0x13a */ AdventureFlag_FrogGlyph_DeeEssIsland = 314,
- /* 0x13b */ AdventureFlag_FrogGlyph_IsleOfFrost = 315,
- /* 0x13c */ AdventureFlag_FrogGlyph_NorthEast = 316,
-
- /* 0x187 */ AdventureFlag_COUNT = 391,
+ /* 0x0009 */ AdventureFlag_SWSeaChart = FLAG(0, 9),
+ /* 0x000A */ AdventureFlag_NWSeaChart = FLAG(0, 10),
+ /* 0x000B */ AdventureFlag_SESeaChart = FLAG(0, 11),
+ /* 0x000C */ AdventureFlag_NESeaChart = FLAG(0, 12),
+ /* 0x0013 */ AdventureFlag_Hourglass = FLAG(0, 19),
+ /* 0x0016 */ AdventureFlag_SunKey = FLAG(0, 22),
+ /* 0x0017 */ AdventureFlag_Unk_23 = FLAG(0, 23),
+ /* 0x001D */ AdventureFlag_Unk_29 = FLAG(0, 29),
+ /* 0x001E */ AdventureFlag_Unk_30 = FLAG(0, 30),
+ /* 0x001F */ AdventureFlag_Unk_31 = FLAG(0, 31),
+
+ /* 0x002B */ AdventureFlag_FishingRod = FLAG(1, 11),
+ /* 0x0030 */ AdventureFlag_Cannon = FLAG(1, 16),
+ /* 0x0033 */ AdventureFlag_RegalNecklace = FLAG(1, 19),
+
+ /* 0x007A */ AdventureFlag_CourageCrest = FLAG(3, 26),
+ /* 0x007D */ AdventureFlag_Azurine = FLAG(3, 29),
+ /* 0x007E */ AdventureFlag_Crimsonine = FLAG(3, 30),
+ /* 0x007F */ AdventureFlag_Aquanine = FLAG(3, 31),
+
+ /* 0x0080 */ AdventureFlag_Unk_128 = FLAG(4, 0),
+ /* 0x008C */ AdventureFlag_SalvageArm = FLAG(4, 12),
+
+ /* 0x00A2 */ AdvantureFlag_HerosNewClothes = FLAG(5, 2),
+ /* 0x00A3 */ AdvantureFlag_Kaleidoscope = FLAG(5, 3),
+ /* 0x00A4 */ AdventureFlag_GuardNotebook = FLAG(5, 4),
+ /* 0x00A7 */ AdventureFlag_WoodHeart = FLAG(5, 7),
+ /* 0x00B6 */ AdventureFlag_SpawnFinalPhantoms = FLAG(5, 22),
+
+ /* 0x0126 */ AdventureFlag_ReceivedGoldenChimney = FLAG(9, 6),
+ /* 0x0127 */ AdventureFlag_ReceivedGoldenHandrail = FLAG(9, 7),
+ /* 0x0128 */ AdventureFlag_ReceivedGoldenCannon = FLAG(9, 8),
+ /* 0x0129 */ AdventureFlag_ReceivedGoldenHull = FLAG(9, 9),
+ /* 0x0137 */ AdventureFlag_FrogGlyph_MercayIsland = FLAG(9, 23),
+ /* 0x0138 */ AdventureFlag_FrogGlyph_MolidaIsland = FLAG(9, 24),
+ /* 0x0139 */ AdventureFlag_FrogGlyph_BannanIsland = FLAG(9, 25),
+ /* 0x013A */ AdventureFlag_FrogGlyph_DeeEssIsland = FLAG(9, 26),
+ /* 0x013B */ AdventureFlag_FrogGlyph_IsleOfFrost = FLAG(9, 27),
+ /* 0x013C */ AdventureFlag_FrogGlyph_NorthEast = FLAG(9, 28),
+
+ /* 0x0187 */ AdventureFlag_COUNT = FLAG(12, 7),
};
struct UnkStruct_027e0d38_UnkC {
@@ -96,46 +92,92 @@ struct FlagsUnk {
/* 38 */ unk32 mUnk_38;
/* 3c */ unk16 mUnk_3c;
/* 3e */ unk16 mUnk_3e;
- /* 40 */ unk16 mUnk_40;
- /* 42 */ unk16 mUnk_42;
+ /* 40 */ u16 mUnk_40;
+ /* 42 */ u16 mUnk_42;
/* 44 */ unk32 mUnk_44;
- /* 48 */ unk8 mUnk_48;
- /* 49 */ unk8 mUnk_49;
- /* 4a */ unk8 mUnk_4a;
+ /* 48 */ u8 mUnk_48;
+ /* 49 */ u8 mUnk_49;
+ /* 4a */ u8 mUnk_4a;
/* 4b */ unk8 mUnk_4b;
/* 4c */
~FlagsUnk();
+};
+
+struct FlagsData {
+ /* 00 */ u32 data[16];
+ /* 40 */
+};
+
+struct astruct_23 {
+ /* 00 */ unk32 mUnk_00;
+ /* 04 */ unk32 mUnk_04;
+ /* 08 */ unk32 mUnk_08;
+ /* 0c */ unk32 mUnk_0c;
+ /* 10 */ unk32 mUnk_10;
+ /* 14 */ unk8 mUnk_14;
+ /* 15 */ unk8 mUnk_15;
+ /* 16 */ bool mUnk_16;
+ /* 17 */ unk8 mUnk_17;
+ /* 18 */ unk8 mUnk_18;
+ /* 19 */ unk8 mUnk_19;
+ /* 1a */ unk16 mUnk_1a;
+ /* 1c */ unk16 mUnk_1c;
+ /* 1e */ unk8 mUnk_1e;
+ /* 1f */ unk8 mUnk_1f;
+ /* 20 */ unk8 mUnk_20[0x94 - 0x20];
+ /* 94 */ unk32 mUnk_94;
+ /* 98 */ unk16 mUnk_98;
+ /* 9a */ unk16 mUnk_9a;
+ /* 9c */ unk16 mUnk_9c;
+ /* 9e */ unk8 mUnk_9e;
+ /* 9f */ unk8 mUnk_9f;
+ /* a0 */ unk32 mUnk_a0;
+ /* a4 */ unk32 mUnk_a4;
+ /* a8 */ unk32 mUnk_a8;
+ /* ac */ unk32 mUnk_ac;
+ /* b0 */
+
+ astruct_23();
+ ~astruct_23();
+};
- void func_ov000_020980f8();
+struct AdventureFlags_44 {
+ void func_ov000_02099024();
+ bool func_ov000_02098c48(s32 param1);
+ bool func_ov000_02098c68();
+ bool func_ov000_02098d20();
+ bool func_ov000_02098fa4(s32 param1);
+ bool func_ov000_020990a4(astruct_23 *param1);
+ s32 func_ov000_0209907c();
};
class AdventureFlags : public SysObject {
public:
- /* 00 */ unk32 mFlags[16];
+ /* 00 */ FlagsData mFlags;
/* 40 */ CutsceneHandler *mCutsceneHandler;
- /* 44 */ void *mUnk_44;
+ /* 44 */ AdventureFlags_44 *mUnk_44;
/* 48 */
static bool Exists();
- void CopyTo(unk32 *flags);
+ void CopyTo(FlagsData *flags);
void func_ov00_02097674();
- s32 func_ov00_02097684();
+ s32 func_ov00_02097684(unk32 param1, unk32 param2, void **param3);
void Load();
void func_ov00_020976c8();
void func_ov00_02097700();
bool func_ov00_02097738();
- unk8 func_ov00_02097750();
+ bool func_ov00_02097750();
bool Get(AdventureFlag flag);
void Set(AdventureFlag flag, bool value);
- void func_Ov00_02097810(s32 param1);
+ void func_ov00_02097810(s32 param1, astruct_23 *param2);
unk32 func_ov00_02097968(unk32 param1);
unk32 func_ov00_02097a44(unk32 param1, s32 param2);
bool func_ov00_02097b9c(s32 param1);
bool func_ov00_02097bac();
bool func_ov00_02097bbc();
- bool func_ov00_02097bcc();
- bool func_ov00_02097bcc(s32 param2);
+ bool func_ov00_02097bcc(s32 param1);
+ bool func_ov00_02097bcc(astruct_23 *param1);
s32 func_ov00_02097c08();
bool Get_FlagsUnk_30_Flag(s32 index);
u8 Get_FlagsUnk_49(s32 index);
@@ -173,7 +215,7 @@ public:
void func_ov004_0210453c();
bool func_ov004_0210455c(s32 param1);
void func_ov004_021046c8(unk32 param1);
- void func_ov004_021046d4();
+ void func_ov004_021046d4(s32 param1);
};
extern AdventureFlags *gAdventureFlags;