diff options
| author | Yanis <35189056+Yanis002@users.noreply.github.com> | 2025-07-22 16:17:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-22 16:17:02 +0200 |
| commit | cf8f5a80b13c4edd7fd8ebb33ab0de81d64f609b (patch) | |
| tree | a9ec152f01d7fa0760aa26a69dec69b4c77dce86 /include/Save | |
| parent | 383ca6aaa2b322869fe304eb5c277150859bfcc0 (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.hpp | 164 |
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; |
