diff --git a/config/SOUE01/symbols.txt b/config/SOUE01/symbols.txt index 29452858..f86f4b86 100644 --- a/config/SOUE01/symbols.txt +++ b/config/SOUE01/symbols.txt @@ -135,12 +135,12 @@ _bss_init_info = .init:0x800066FC; // type:object size:0x20 scope:global data:4b @eti_80006BD8 = extabindex:0x80006BD8; // type:object size:0xC scope:local hidden @eti_80006BE4 = extabindex:0x80006BE4; // type:object size:0xC scope:local hidden _eti_init_info = extabindex:0x80006BF0; // type:object size:0x20 scope:global -fn_80006C20 = .text:0x80006C20; // type:function size:0x4 +fn_80006C20__Fv = .text:0x80006C20; // type:function size:0x4 strequals = .text:0x80006C30; // type:function size:0x90 findSMA2 = .text:0x80006CC0; // type:function size:0x10 findSMA3 = .text:0x80006CD0; // type:function size:0x10 -fn_80006CE0 = .text:0x80006CE0; // type:function size:0x80 -fn_80006D60 = .text:0x80006D60; // type:function size:0x60 +fn_80006CE0__FiPPc = .text:0x80006CE0; // type:function size:0x80 +fn_80006D60__Fv = .text:0x80006D60; // type:function size:0x60 fn_80006DC0 = .text:0x80006DC0; // type:function size:0x48 fn_80006E10 = .text:0x80006E10; // type:function size:0x3C fn_80006E50 = .text:0x80006E50; // type:function size:0x58 @@ -42182,7 +42182,7 @@ layoutEx2Heap__5dHeap = .sbss:0x805751BC; // type:object size:0x4 data:4byte layoutResHeap__5dHeap = .sbss:0x805751C0; // type:object size:0x4 data:4byte fontHeap__5dHeap = .sbss:0x805751C4; // type:object size:0x4 data:4byte HBMHeap__5dHeap = .sbss:0x805751C8; // type:object size:0x4 data:4byte -lbl_805751D0 = .sbss:0x805751D0; // type:object size:0x8 data:4byte +lbl_805751D0 = .sbss:0x805751D0; // type:object size:0x4 data:4byte g_InitialTime__5dMain = .sbss:0x805751D8; // type:object size:0x8 data:4byte m_connected__Q24dPad4ex_c = .sbss:0x805751E0; // type:object size:0x4 sInstance__13dPadManager_c = .sbss:0x805751E8; // type:object size:0x8 data:4byte diff --git a/include/f/f_manager.h b/include/f/f_manager.h index 91459e56..9202612e 100644 --- a/include/f/f_manager.h +++ b/include/f/f_manager.h @@ -35,6 +35,7 @@ public: PROC_FLAG_DELETE = GET_PROC_FLAG(DELETE), PROC_FLAG_DRAW = GET_PROC_FLAG(DRAW) }; + fManager_c(fBase_c *owner) : connect_node(owner), execute_node(owner), draw_node(owner), search_node(owner) {} ~fManager_c() {} int getSearchTableNum(); @@ -43,6 +44,14 @@ public: static fBase_c *searchBaseByGroupType(u8 groupType, const fBase_c *parent = nullptr); static void mainLoop(); + static void setStopProcFlags(u32 flags) { + m_StopProcInf |= flags; + } + + static void keepStopProcFlags(u32 flags) { + m_StopProcInf &= flags; + } + private: fTrNdBa_c connect_node; ///< The node in ::m_connectManage. fLiNdPrio_c execute_node; ///< The node in ::m_executeManage. diff --git a/src/d/d_main.cpp b/src/d/d_main.cpp index 93f7c3d1..c78c627a 100644 --- a/src/d/d_main.cpp +++ b/src/d/d_main.cpp @@ -1,11 +1,41 @@ #include "d/d_main.h" #include "d/d_sys.h" +#include "f/f_manager.h" #include "toBeSorted/d_lib.h" #include "toBeSorted/mpls.h" #include "rvl/OS.h" +u32 lbl_805751D0; + +bool fn_80054F90(u32 val) { + return lbl_805751D0 & val; +} + +void fn_80054FB0(u32 val) { + u32 flags = lbl_805751D0; + + if (!flags) { + fManager_c::setStopProcFlags( + fManager_c::PROC_FLAG_CONNECT + | fManager_c::PROC_FLAG_CREATE + | fManager_c::PROC_FLAG_EXECUTE + | fManager_c::PROC_FLAG_DELETE + ); + } + + lbl_805751D0 = flags | val; +} + +void fn_80054EF0(u32 val) { + lbl_805751D0 &= ~val; + + if (!lbl_805751D0) { + fManager_c::keepStopProcFlags(fManager_c::PROC_FLAG_DRAW); + } +} + void dMain::Create() { dSys_c::create(); dSys_c::setBlack(false); @@ -25,9 +55,9 @@ void *dMain::main01(void *arg) { #define STACK_SIZE 0xF000 -void main(int argc, char **argv) { - static OSThread MAIN_THREAD; +static OSThread MAIN_THREAD; +void main(int argc, char **argv) { u8 pStackBase[STACK_SIZE] __attribute__((aligned(32))); fn_80006C20();