diff --git a/include/f/f_op/f_op_overlap_req.h b/include/f/f_op/f_op_overlap_req.h index 174e139806d..397cf1b664e 100644 --- a/include/f/f_op/f_op_overlap_req.h +++ b/include/f/f_op/f_op_overlap_req.h @@ -1,12 +1,37 @@ #ifndef F_F_OP_OVERLAP_REQ_H_ #define F_F_OP_OVERLAP_REQ_H_ +#include "SComponent/c_request.h" #include "dolphin/types.h" -class overlap_request_class; +class overlap_request_class { +public: + u8 field_0x0; + u8 field_0x1; + s16 field_0x2; + u16 field_0x4; + u16 field_0x6; + u32 field_0x8; + u32 field_0xc; + u8 field_0x10; + u8 field_0x11; + u8 field_0x12; + u8 field_0x13; + int field_0x14; + u8 field_0x18; + u8 field_0x19; + u8 field_0x1a; + u8 field_0x1b; + u8 field_0x1c; + u8 field_0x1d; + u8 field_0x1e; + u8 field_0x1f; + u8* field_0x20; +}; int fopOvlpReq_OverlapClr(overlap_request_class* param_1); request_base_class* fopOvlpReq_Request(overlap_request_class*, s16, u16); int fopOvlpReq_Handler(overlap_request_class*); int fopOvlpReq_Cancel(overlap_request_class*); +int fopOvlpReq_phase_Done(overlap_request_class* param_1); #endif \ No newline at end of file diff --git a/include/f/f_op/f_op_overlap_req/asm/func_8001E954.s b/include/f/f_op/f_op_overlap_req/asm/func_8001E954.s index 9dfa7a4adfe..35247ac8094 100644 --- a/include/f/f_op/f_op_overlap_req/asm/func_8001E954.s +++ b/include/f/f_op/f_op_overlap_req/asm/func_8001E954.s @@ -21,7 +21,7 @@ lbl_8001E988: /* 8001E9A0 0001B8E0 48 24 7C 91 */ bl cPhs_Set /* 8001E9A4 0001B8E4 7F A3 EB 78 */ mr r3, r29 /* 8001E9A8 0001B8E8 7F E4 FB 78 */ mr r4, r31 -/* 8001E9AC 0001B8EC 48 00 01 19 */ bl fopOvlpReq_SetPeektime +/* 8001E9AC 0001B8EC 48 00 01 19 */ bl fopOvlpReq_SetPeektime__FP21overlap_request_classUs /* 8001E9B0 0001B8F0 38 00 00 01 */ li r0, 1 /* 8001E9B4 0001B8F4 B0 1D 00 04 */ sth r0, 4(r29) /* 8001E9B8 0001B8F8 B0 1D 00 02 */ sth r0, 2(r29) diff --git a/include/f/f_op/f_op_overlap_req/asm/func_8001EA88.s b/include/f/f_op/f_op_overlap_req/asm/func_8001EA88.s index 3d1e1d452c2..09401329b81 100644 --- a/include/f/f_op/f_op_overlap_req/asm/func_8001EA88.s +++ b/include/f/f_op/f_op_overlap_req/asm/func_8001EA88.s @@ -1,7 +1,7 @@ /* 8001EA88 0001B9C8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8001EA8C 0001B9CC 7C 08 02 A6 */ mflr r0 /* 8001EA90 0001B9D0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8001EA94 0001B9D4 4B FF FC 59 */ bl fopOvlpReq_phase_Done +/* 8001EA94 0001B9D4 4B FF FC 59 */ bl fopOvlpReq_phase_Done__FP21overlap_request_class /* 8001EA98 0001B9D8 20 03 00 02 */ subfic r0, r3, 2 /* 8001EA9C 0001B9DC 7C 00 00 34 */ cntlzw r0, r0 /* 8001EAA0 0001B9E0 54 03 D9 7E */ srwi r3, r0, 5 diff --git a/include/f/f_op/f_op_overlap_req/asm/func_8001EAD8.s b/include/f/f_op/f_op_overlap_req/asm/func_8001EAD8.s index 986f0e8cafb..1a751578bb0 100644 --- a/include/f/f_op/f_op_overlap_req/asm/func_8001EAD8.s +++ b/include/f/f_op/f_op_overlap_req/asm/func_8001EAD8.s @@ -7,7 +7,7 @@ /* 8001EAF0 0001BA30 54 00 CF FE */ rlwinm r0, r0, 0x19, 0x1f, 0x1f /* 8001EAF4 0001BA34 28 00 00 01 */ cmplwi r0, 1 /* 8001EAF8 0001BA38 41 82 00 10 */ beq lbl_8001EB08 -/* 8001EAFC 0001BA3C 4B FF FF B9 */ bl fopOvlpReq_Is_PeektimeLimit +/* 8001EAFC 0001BA3C 4B FF FF B9 */ bl fopOvlpReq_Is_PeektimeLimit__FP21overlap_request_class /* 8001EB00 0001BA40 2C 03 00 00 */ cmpwi r3, 0 /* 8001EB04 0001BA44 40 82 00 0C */ bne lbl_8001EB10 lbl_8001EB08: diff --git a/ldscript.lcf b/ldscript.lcf index efb63a65040..42fb9fffed3 100644 --- a/ldscript.lcf +++ b/ldscript.lcf @@ -3444,6 +3444,19 @@ fopOvlp_Execute__FPv fopOvlp_IsDelete__FPv fopOvlp_Delete__FPv fopOvlp_Create__FPv +fopOvlpReq_phase_Done__FP21overlap_request_class +fopOvlpReq_phase_IsDone__FP21overlap_request_class +fopOvlpReq_phase_IsWaitOfFadeout__FP21overlap_request_class +fopOvlpReq_phase_WaitOfFadeout__FP21overlap_request_class +fopOvlpReq_phase_IsComplete__FP21overlap_request_class +fopOvlpReq_phase_IsCreated__FP21overlap_request_class +fopOvlpReq_phase_Create__FP21overlap_request_class +fopOvlpReq_Request__FP21overlap_request_classsUs +fopOvlpReq_Handler__FP21overlap_request_class +fopOvlpReq_Cancel__FP21overlap_request_class +fopOvlpReq_Is_PeektimeLimit__FP21overlap_request_class +fopOvlpReq_SetPeektime__FP21overlap_request_classUs +fopOvlpReq_OverlapClr__FP21overlap_request_class } /* .init 80003100 - 80005600 diff --git a/src/f/f_op/f_op_overlap_req.cpp b/src/f/f_op/f_op_overlap_req.cpp index 0c4da5d73ae..2366dbe8764 100644 --- a/src/f/f_op/f_op_overlap_req.cpp +++ b/src/f/f_op/f_op_overlap_req.cpp @@ -1,5 +1,7 @@ /* f_op_overlap_req.cpp autogenerated by split.py v0.4 at 2021-02-15 20:24:53.163616 */ +#include "f/f_op/f_op_overlap_req.h" +#include "f/f_pc/f_pc_manager.h" #include "global.h" // additional symbols needed for f_op_overlap_req.cpp @@ -7,25 +9,21 @@ extern "C" { void _restgpr_29(void); void _savegpr_29(void); -void cPhs_Do(void); -void cPhs_Set(void); void cReq_Command__FP18request_base_classUc(void); void cReq_Create__FP18request_base_classUc(void); void cReq_Done__FP18request_base_class(void); void cReq_Is_Done__FP18request_base_class(void); void fopOvlpReq_Cancel__FP21overlap_request_class(void); -void fopOvlpReq_Handler__FP21overlap_request_class(void); void fopOvlpReq_Is_PeektimeLimit(void); void fopOvlpReq_OverlapClr__FP21overlap_request_class(void); void fopOvlpReq_Request__FP21overlap_request_classsUs(void); +void fopOvlpReq_Handler__FP21overlap_request_class(void); +void fopOvlpReq_phase_Done__FP21overlap_request_class(void); +void fopOvlpReq_SetPeektime__FP21overlap_request_classUs(void); +void fopOvlpReq_Is_PeektimeLimit__FP21overlap_request_class(void); void fopOvlpReq_SetPeektime(void); void fopOvlpReq_phase_Done(void); void fpcEx_SearchByID(void); -void fpcLy_CurrentLayer(void); -void fpcLy_RootLayer(void); -void fpcLy_SetCurrentLayer(void); -void fpcM_Delete(void); -void fpcM_IsCreating(void); void fpcSCtRq_Request(void); void func_8001E748(void); void func_8001E794(void); @@ -39,95 +37,74 @@ void func_8001E904(void); // autogenerated by split.py v0.4 at 2021-02-15 20:24:53.163658 extern u8 lbl_803A3890; -extern "C" { -// fopOvlpReq_phase_Done__FP21overlap_request_class -// fopOvlpReq_phase_Done(overlap_request_class*) -asm void fopOvlpReq_phase_Done(void) { - nofralloc -#include "f/f_op/f_op_overlap_req/asm/func_8001E6EC.s" +int fopOvlpReq_phase_Done(overlap_request_class* pOvlpReq) { + if (fpcM_Delete(pOvlpReq->field_0x20) == 1) { + pOvlpReq->field_0x20 = 0; + pOvlpReq->field_0x4 = 0; + pOvlpReq->field_0x6 = 0; + pOvlpReq->field_0x8 = 0; + pOvlpReq->field_0xc = 0; + return 2; + } + return 0; } -// fopOvlpReq_phase_IsDone__FP21overlap_request_class -// fopOvlpReq_phase_IsDone(overlap_request_class*) -asm void func_8001E748(void) { +asm void fopOvlpReq_phase_IsDone(overlap_request_class*) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001E748.s" } -// fopOvlpReq_phase_IsWaitOfFadeout__FP21overlap_request_class -// fopOvlpReq_phase_IsWaitOfFadeout(overlap_request_class*) -asm void func_8001E794(void) { +asm void fopOvlpReq_phase_IsWaitOfFadeout(overlap_request_class*) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001E794.s" } -// fopOvlpReq_phase_WaitOfFadeout__FP21overlap_request_class -// fopOvlpReq_phase_WaitOfFadeout(overlap_request_class*) -asm void func_8001E7E4(void) { +asm void fopOvlpReq_phase_WaitOfFadeout(overlap_request_class*) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001E7E4.s" } -// fopOvlpReq_phase_IsComplete__FP21overlap_request_class -// fopOvlpReq_phase_IsComplete(overlap_request_class*) -asm void func_8001E854(void) { +asm void fopOvlpReq_phase_IsComplete(overlap_request_class*) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001E854.s" } -// fopOvlpReq_phase_IsCreated__FP21overlap_request_class -// fopOvlpReq_phase_IsCreated(overlap_request_class*) -asm void func_8001E8A4(void) { +asm void fopOvlpReq_phase_IsCreated(overlap_request_class*) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001E8A4.s" } -// fopOvlpReq_phase_Create__FP21overlap_request_class -// fopOvlpReq_phase_Create(overlap_request_class*) -asm void func_8001E904(void) { +asm void fopOvlpReq_phase_Create(overlap_request_class*) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001E904.s" } -// fopOvlpReq_Request__FP21overlap_request_classsUs -// fopOvlpReq_Request(overlap_request_class*, s16, u16) -asm void fopOvlpReq_Request__FP21overlap_request_classsUs(void) { +asm request_base_class* fopOvlpReq_Request(overlap_request_class*, s16, u16) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001E954.s" } -// fopOvlpReq_Handler__FP21overlap_request_class -// fopOvlpReq_Handler(overlap_request_class*) -asm void fopOvlpReq_Handler__FP21overlap_request_class(void) { +asm int fopOvlpReq_Handler(overlap_request_class*) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001E9F0.s" } -// fopOvlpReq_Cancel__FP21overlap_request_class -// fopOvlpReq_Cancel(overlap_request_class*) -asm void fopOvlpReq_Cancel__FP21overlap_request_class(void) { +asm int fopOvlpReq_Cancel(overlap_request_class*) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001EA88.s" } -// fopOvlpReq_Is_PeektimeLimit__FP21overlap_request_class -// fopOvlpReq_Is_PeektimeLimit(overlap_request_class*) -asm void fopOvlpReq_Is_PeektimeLimit(void) { +asm void fopOvlpReq_Is_PeektimeLimit(overlap_request_class*) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001EAB4.s" } -// fopOvlpReq_SetPeektime__FP21overlap_request_classUs -// fopOvlpReq_SetPeektime(overlap_request_class*, u16) -asm void fopOvlpReq_SetPeektime(void) { +asm void fopOvlpReq_SetPeektime(overlap_request_class*, u16) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001EAC4.s" } -// fopOvlpReq_OverlapClr__FP21overlap_request_class -// fopOvlpReq_OverlapClr(overlap_request_class*) -asm void fopOvlpReq_OverlapClr__FP21overlap_request_class(void) { +asm int fopOvlpReq_OverlapClr(overlap_request_class*) { nofralloc #include "f/f_op/f_op_overlap_req/asm/func_8001EAD8.s" -} -}; +} \ No newline at end of file diff --git a/src/f/f_pc/f_pc_searcher.cpp b/src/f/f_pc/f_pc_searcher.cpp index 9f0bc21cd1b..04f196553f4 100644 --- a/src/f/f_pc/f_pc_searcher.cpp +++ b/src/f/f_pc/f_pc_searcher.cpp @@ -2,8 +2,6 @@ #include "f/f_pc/f_pc_searcher.h" #include "f/f_pc/f_pc_base.h" -extern "C" { - void* fpcSch_JudgeForPName(base_process_class* pProc, void* pUserData) { s16 pname = *(s16*)pUserData; if (pProc->mProcName == pname) @@ -16,5 +14,4 @@ void* fpcSch_JudgeByID(base_process_class* pProc, void* pUserData) { if (pProc->mBsPcId == id) return pProc; return NULL; -} } \ No newline at end of file