diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 07ca6e05..953088b6 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -1323,9 +1323,9 @@ _ZN14AdventureFlags18func_ov00_020980acEv kind:function(arm,size=0x10) addr:0x20 _ZN14AdventureFlags18func_ov00_020980bcEi kind:function(arm,size=0x14) addr:0x20980bc _ZN8FlagsUnkD1Ev kind:function(arm,size=0x24) addr:0x20980d0 _ZN9FlagsUnk2D1Ev kind:function(arm,size=0x4) addr:0x20980f4 -_ZN8FlagsUnk19func_ov000_020980f8Ev kind:function(arm,size=0x4) addr:0x20980f8 -_ZN15CutsceneHandler19func_ov000_020980fcEiiPPv kind:function(arm,size=0x18) addr:0x20980fc -_ZN15CutsceneHandler19func_ov000_02098114Ev kind:function(arm,size=0x3c) addr:0x2098114 +_Z19func_ov000_020980f8P15CutsceneHandler kind:function(arm,size=0x4) addr:0x20980f8 +_Z19func_ov000_020980fcP15CutsceneHandler kind:function(arm,size=0x18) addr:0x20980fc +_Z19func_ov000_02098114P15CutsceneHandler kind:function(arm,size=0x3c) addr:0x2098114 _ZN15CutsceneHandler12SkipCutsceneEi kind:function(arm,size=0x68) addr:0x2098150 _ZN15CutsceneHandler19func_ov000_020981b8EPi kind:function(arm,size=0x408) addr:0x20981b8 _ZN15CutsceneHandler19func_ov000_020985c0Ev kind:function(arm,size=0x4) addr:0x20985c0 diff --git a/config/usa/arm9/overlays/ov000/symbols.txt b/config/usa/arm9/overlays/ov000/symbols.txt index 84b9f721..c4d6977d 100644 --- a/config/usa/arm9/overlays/ov000/symbols.txt +++ b/config/usa/arm9/overlays/ov000/symbols.txt @@ -1323,9 +1323,9 @@ _ZN14AdventureFlags18func_ov00_020980acEv kind:function(arm,size=0x10) addr:0x20 _ZN14AdventureFlags18func_ov00_020980bcEi kind:function(arm,size=0x14) addr:0x209805c _ZN8FlagsUnkD1Ev kind:function(arm,size=0x24) addr:0x2098070 _ZN9FlagsUnk2D1Ev kind:function(arm,size=0x4) addr:0x2098094 -_ZN8FlagsUnk19func_ov000_020980f8Ev kind:function(arm,size=0x4) addr:0x2098098 -_ZN15CutsceneHandler19func_ov000_020980fcEiiPPv kind:function(arm,size=0x18) addr:0x209809c -_ZN15CutsceneHandler19func_ov000_02098114Ev kind:function(arm,size=0x3c) addr:0x20980b4 +_Z19func_ov000_020980f8P15CutsceneHandler kind:function(arm,size=0x4) addr:0x2098098 +_Z19func_ov000_020980fcP15CutsceneHandler kind:function(arm,size=0x18) addr:0x209809c +_Z19func_ov000_02098114P15CutsceneHandler kind:function(arm,size=0x3c) addr:0x20980b4 _ZN15CutsceneHandler12SkipCutsceneEi kind:function(arm,size=0x68) addr:0x20980f0 _ZN15CutsceneHandler19func_ov000_020981b8EPi kind:function(arm,size=0x408) addr:0x2098158 _ZN15CutsceneHandler19func_ov000_020985c0Ev kind:function(arm,size=0x4) addr:0x2098560 diff --git a/include/Save/AdventureFlags.hpp b/include/Save/AdventureFlags.hpp index b076cd73..0484fba8 100644 --- a/include/Save/AdventureFlags.hpp +++ b/include/Save/AdventureFlags.hpp @@ -104,19 +104,19 @@ public: bool func_ov00_02097bcc(); bool func_ov00_02097bcc(s32 param2); s32 func_ov00_02097c08(); - bool Get_FlagsUnk_30_Flag(int index); - unk8 Get_FlagsUnk_49(int index); - unk8 Get_FlagsUnk_48(int index); - unk8 Get_FlagsUnk_4a(int index); - unk16 Get_FlagsUnk_42(int index); - unk16 Get_FlagsUnk_40(int index); - unk32 Get_FlagsUnk_38(int index); - unk32 Get_FlagsUnk_34(int index); - unk32 Get_FlagsUnk_44(int index); - static unk32 Get_FlagsUnk_30(int index); - static bool Get_FlagsUnk_00(int index, FlagsUnk2 *result); - bool Get_FlagsUnk_18(int index, FlagsUnk2 *result); - FlagsUnk *Get_FlagsUnk(int index); + bool Get_FlagsUnk_30_Flag(s32 index); + u8 Get_FlagsUnk_49(s32 index); + u8 Get_FlagsUnk_48(s32 index); + u8 Get_FlagsUnk_4a(s32 index); + u16 Get_FlagsUnk_42(s32 index); + u16 Get_FlagsUnk_40(s32 index); + unk32 Get_FlagsUnk_38(s32 index); + unk32 Get_FlagsUnk_34(s32 index); + unk32 Get_FlagsUnk_44(s32 index); + static unk32 Get_FlagsUnk_30(s32 index); + static bool Get_FlagsUnk_00(s32 index, FlagsUnk2 *result); + bool Get_FlagsUnk_18(s32 index, FlagsUnk2 *result); + FlagsUnk *Get_FlagsUnk(s32 index); bool func_ov00_02097e6c(); bool func_ov00_02097e7c(); bool func_ov00_02097ea4(); diff --git a/src/00_Core/Save/AdventureFlags.cpp b/src/00_Core/Save/AdventureFlags.cpp index 7ba5f7c6..012e9efa 100644 --- a/src/00_Core/Save/AdventureFlags.cpp +++ b/src/00_Core/Save/AdventureFlags.cpp @@ -1,9 +1,34 @@ #include "Save/AdventureFlags.hpp" +#include "Cutscene/CutsceneHandler.hpp" + +extern void func_ov000_020980f8(CutsceneHandler *cutsceneHandler); +extern unk32 func_ov000_020980fc(CutsceneHandler *cutsceneHandler); +extern bool func_ov000_02098114(CutsceneHandler *cutsceneHandler); +extern u8 data_ov000_020e310c[]; +extern u8 data_ov000_020e313c[]; +extern u8 data_ov000_020e3140[]; +extern u8 data_ov000_020e3144[]; +extern u8 data_ov000_020e314c[]; +extern u8 data_ov000_020e314e[]; +extern u8 data_ov000_020e3150[]; +extern u8 data_ov000_020e3154[]; +extern u8 data_ov000_020e3155[]; +extern u8 data_ov000_020e3156[]; + +bool AdventureFlags::Exists() { + return gAdventureFlags != NULL; +} -bool AdventureFlags::Exists() {} void AdventureFlags::CopyTo(unk32 *flags) {} -void AdventureFlags::func_ov00_02097674() {} -s32 AdventureFlags::func_ov00_02097684() {} + +void AdventureFlags::func_ov00_02097674() { + func_ov000_020980f8(this->mCutsceneHandler); +} + +s32 AdventureFlags::func_ov00_02097684() { + return func_ov000_020980fc(this->mCutsceneHandler); +} + void AdventureFlags::Load() {} void AdventureFlags::func_ov00_020976c8() {} void AdventureFlags::func_ov00_02097700() {} @@ -20,22 +45,83 @@ bool AdventureFlags::func_ov00_02097bbc() {} bool AdventureFlags::func_ov00_02097bcc() {} bool AdventureFlags::func_ov00_02097bcc(s32 param2) {} s32 AdventureFlags::func_ov00_02097c08() {} -bool AdventureFlags::Get_FlagsUnk_30_Flag(int index) {} -unk8 AdventureFlags::Get_FlagsUnk_49(int index) {} -unk8 AdventureFlags::Get_FlagsUnk_48(int index) {} -unk8 AdventureFlags::Get_FlagsUnk_4a(int index) {} -unk16 AdventureFlags::Get_FlagsUnk_42(int index) {} -unk16 AdventureFlags::Get_FlagsUnk_40(int index) {} -unk32 AdventureFlags::Get_FlagsUnk_38(int index) {} -unk32 AdventureFlags::Get_FlagsUnk_34(int index) {} -unk32 AdventureFlags::Get_FlagsUnk_44(int index) {} -unk32 AdventureFlags::Get_FlagsUnk_30(int index) {} -bool AdventureFlags::Get_FlagsUnk_00(int index, FlagsUnk2 *result) {} -bool AdventureFlags::Get_FlagsUnk_18(int index, FlagsUnk2 *result) {} -FlagsUnk *AdventureFlags::Get_FlagsUnk(int index) {} -bool AdventureFlags::func_ov00_02097e6c() {} -bool AdventureFlags::func_ov00_02097e7c() {} -bool AdventureFlags::func_ov00_02097ea4() {} + +bool AdventureFlags::Get_FlagsUnk_30_Flag(s32 index) { + unk32 unk30 = this->Get_FlagsUnk_30(index); + + return this->Get(unk30); +} + +u8 AdventureFlags::Get_FlagsUnk_49(s32 index) { + return data_ov000_020e3155[index * 0x4C]; +} + +u8 AdventureFlags::Get_FlagsUnk_48(s32 index) { + return data_ov000_020e3154[index * 0x4C]; +} + +u8 AdventureFlags::Get_FlagsUnk_4a(s32 index) { + return data_ov000_020e3156[index * 0x4C]; +} + +u16 AdventureFlags::Get_FlagsUnk_42(s32 index) { + return *(u16 *) (data_ov000_020e314e + index * 0x4C); +} + +u16 AdventureFlags::Get_FlagsUnk_40(s32 index) { + return *(unk16 *) (data_ov000_020e314c + index * 0x4C); +} + +unk32 AdventureFlags::Get_FlagsUnk_38(s32 index) { + return *(unk32 *) (data_ov000_020e3144 + index * 0x4C); +} + +unk32 AdventureFlags::Get_FlagsUnk_34(s32 index) { + return *(unk32 *) (data_ov000_020e3140 + index * 0x4C); +} + +unk32 AdventureFlags::Get_FlagsUnk_44(s32 index) { + return *(unk32 *) (data_ov000_020e3150 + index * 0x4C); +} + +unk32 AdventureFlags::Get_FlagsUnk_30(s32 index) { + return *(unk32 *) (data_ov000_020e313c + index * 0x4C); +} + +bool AdventureFlags::Get_FlagsUnk_00(s32 index, FlagsUnk2 *result) {} +bool AdventureFlags::Get_FlagsUnk_18(s32 index, FlagsUnk2 *result) {} + +FlagsUnk *AdventureFlags::Get_FlagsUnk(s32 index) { + return (FlagsUnk *) (data_ov000_020e310c + index * 0x4C); +} + +bool AdventureFlags::func_ov00_02097e6c() { + return func_ov000_02098114(this->mCutsceneHandler); +} + +bool AdventureFlags::func_ov00_02097e7c() { + bool bVar1; + + bVar1 = this->func_ov00_02097e6c(); + if (bVar1) { + bVar1 = this->mCutsceneHandler->SkipCutscene(0); + return bVar1; + } + + return false; +} + +bool AdventureFlags::func_ov00_02097ea4() { + bool bVar1; + + bVar1 = this->func_ov00_02097e6c(); + if (bVar1) { + bVar1 = this->mCutsceneHandler->SkipCutscene(1); + return bVar1; + } + + return false; +} unk32 AdventureFlags::func_ov00_02097ecc() {} void *AdventureFlags::func_ov00_02097f8c() {} void *AdventureFlags::func_ov00_02097fac() {}