diff --git a/asm/f/op/scene/f_op_scene_req.s b/asm/f/op/scene/f_op_scene_req.s index d5b27366e07..4f9467d0af2 100644 --- a/asm/f/op/scene/f_op_scene_req.s +++ b/asm/f/op/scene/f_op_scene_req.s @@ -62,7 +62,7 @@ lbl_8001EED4: /* 8001EF04 0001BE44 48 00 16 91 */ bl fopScnPause_Disable__FP11scene_class lbl_8001EF08: /* 8001EF08 0001BE48 38 00 00 00 */ li r0, 0 -/* 8001EF0C 0001BE4C 90 0D 87 60 */ stw r0, lbl_80450CE0-_SDA_BASE_(r13) +/* 8001EF0C 0001BE4C 90 0D 87 60 */ stw r0, l_fopScnRq_IsUsingOfOverlap-_SDA_BASE_(r13) /* 8001EF10 0001BE50 38 60 00 02 */ li r3, 2 /* 8001EF14 0001BE54 80 01 00 14 */ lwz r0, 0x14(r1) /* 8001EF18 0001BE58 7C 08 03 A6 */ mtlr r0 @@ -134,14 +134,14 @@ fopScnRq_FadeRequest__FsUs: /* 8001EFF4 0001BF34 7C 08 02 A6 */ mflr r0 /* 8001EFF8 0001BF38 90 01 00 14 */ stw r0, 0x14(r1) /* 8001EFFC 0001BF3C 38 A0 00 00 */ li r5, 0 -/* 8001F000 0001BF40 80 0D 87 60 */ lwz r0, lbl_80450CE0-_SDA_BASE_(r13) +/* 8001F000 0001BF40 80 0D 87 60 */ lwz r0, l_fopScnRq_IsUsingOfOverlap-_SDA_BASE_(r13) /* 8001F004 0001BF44 2C 00 00 00 */ cmpwi r0, 0 /* 8001F008 0001BF48 40 82 00 18 */ bne lbl_8001F020 /* 8001F00C 0001BF4C 4B FF F5 F9 */ bl fopOvlpM_Request__FsUs /* 8001F010 0001BF50 7C 65 1B 79 */ or. r5, r3, r3 /* 8001F014 0001BF54 41 82 00 0C */ beq lbl_8001F020 /* 8001F018 0001BF58 38 00 00 01 */ li r0, 1 -/* 8001F01C 0001BF5C 90 0D 87 60 */ stw r0, lbl_80450CE0-_SDA_BASE_(r13) +/* 8001F01C 0001BF5C 90 0D 87 60 */ stw r0, l_fopScnRq_IsUsingOfOverlap-_SDA_BASE_(r13) lbl_8001F020: /* 8001F020 0001BF60 7C A3 2B 78 */ mr r3, r5 /* 8001F024 0001BF64 80 01 00 14 */ lwz r0, 0x14(r1) diff --git a/asm/sbss.s b/asm/sbss.s index a12212f01ca..804a3cc6a60 100644 --- a/asm/sbss.s +++ b/asm/sbss.s @@ -359,8 +359,8 @@ lbl_80450CD4: .global lbl_80450CD8 lbl_80450CD8: .skip 0x8 -.global lbl_80450CE0 -lbl_80450CE0: +.global l_fopScnRq_IsUsingOfOverlap +l_fopScnRq_IsUsingOfOverlap: .skip 0x8 .global lbl_80450CE8 lbl_80450CE8: diff --git a/f_op_scene_req.cpp b/f_op_scene_req.cpp index e7ce7d4d6d5..a475c27aa8b 100644 --- a/f_op_scene_req.cpp +++ b/f_op_scene_req.cpp @@ -40,7 +40,7 @@ void func_8001EFB0(void); // additional symbols needed for f_op_scene_req.cpp // autogenerated by split.py v0.4 at 2021-03-20 21:43:05.095976 extern u8 lbl_803A38C8; -extern u8 lbl_80450CE0; +extern u8 l_fopScnRq_IsUsingOfOverlap; extern "C" { // fopScnRq_phase_ClearOverlap__FP19scene_request_class diff --git a/include/f/f_op/f_op_scene_req.h b/include/f/f_op/f_op_scene_req.h index 576f5de645c..51bfd6ab40e 100644 --- a/include/f/f_op/f_op_scene_req.h +++ b/include/f/f_op/f_op_scene_req.h @@ -3,13 +3,22 @@ #include "dolphin/types.h" #include "f/f_op/f_op_scene_pause.h" +#include "f/f_pc/f_pc_node_req.h" +#include "SComponent/c_phase.h" extern "C" { void fopScnRq_Handler__Fv(void); void fopScnRq_ReRequest(void); } -class scene_request_class; +class scene_request_class { + public: + node_create_request mCrtReq; + u8 field_0x60[4]; + int mFadeRequest; + request_of_phase_process_class mReqPhsProcCls; + u8 field_0x70[4]; +}; scene_request_class* fopScnRq_phase_ClearOverlap(scene_request_class* param_1); u32 fopScnRq_Request(int, scene_class*, s16, void*, s16, u16); diff --git a/include/f/f_op/f_op_scene_req/asm/func_8001EEE4.s b/include/f/f_op/f_op_scene_req/asm/func_8001EEE4.s index 0c184a5af59..406da1dad3e 100644 --- a/include/f/f_op/f_op_scene_req/asm/func_8001EEE4.s +++ b/include/f/f_op/f_op_scene_req/asm/func_8001EEE4.s @@ -9,7 +9,7 @@ /* 8001EF04 0001BE44 48 00 16 91 */ bl fopScnPause_Disable__FP11scene_class lbl_8001EF08: /* 8001EF08 0001BE48 38 00 00 00 */ li r0, 0 -/* 8001EF0C 0001BE4C 90 0D 87 60 */ stw r0, lbl_80450CE0-_SDA_BASE_(r13) +/* 8001EF0C 0001BE4C 90 0D 87 60 */ stw r0, l_fopScnRq_IsUsingOfOverlap-_SDA_BASE_(r13) /* 8001EF10 0001BE50 38 60 00 02 */ li r3, 2 /* 8001EF14 0001BE54 80 01 00 14 */ lwz r0, 0x14(r1) /* 8001EF18 0001BE58 7C 08 03 A6 */ mtlr r0 diff --git a/include/f/f_op/f_op_scene_req/asm/func_8001EFF0.s b/include/f/f_op/f_op_scene_req/asm/func_8001EFF0.s index d24d01bd06b..3ae54c8ff99 100644 --- a/include/f/f_op/f_op_scene_req/asm/func_8001EFF0.s +++ b/include/f/f_op/f_op_scene_req/asm/func_8001EFF0.s @@ -2,14 +2,14 @@ /* 8001EFF4 0001BF34 7C 08 02 A6 */ mflr r0 /* 8001EFF8 0001BF38 90 01 00 14 */ stw r0, 0x14(r1) /* 8001EFFC 0001BF3C 38 A0 00 00 */ li r5, 0 -/* 8001F000 0001BF40 80 0D 87 60 */ lwz r0, lbl_80450CE0-_SDA_BASE_(r13) +/* 8001F000 0001BF40 80 0D 87 60 */ lwz r0, l_fopScnRq_IsUsingOfOverlap-_SDA_BASE_(r13) /* 8001F004 0001BF44 2C 00 00 00 */ cmpwi r0, 0 /* 8001F008 0001BF48 40 82 00 18 */ bne lbl_8001F020 /* 8001F00C 0001BF4C 4B FF F5 F9 */ bl fopOvlpM_Request__FsUs /* 8001F010 0001BF50 7C 65 1B 79 */ or. r5, r3, r3 /* 8001F014 0001BF54 41 82 00 0C */ beq lbl_8001F020 /* 8001F018 0001BF58 38 00 00 01 */ li r0, 1 -/* 8001F01C 0001BF5C 90 0D 87 60 */ stw r0, lbl_80450CE0-_SDA_BASE_(r13) +/* 8001F01C 0001BF5C 90 0D 87 60 */ stw r0, l_fopScnRq_IsUsingOfOverlap-_SDA_BASE_(r13) lbl_8001F020: /* 8001F020 0001BF60 7C A3 2B 78 */ mr r3, r5 /* 8001F024 0001BF64 80 01 00 14 */ lwz r0, 0x14(r1) diff --git a/src/f/f_op/f_op_scene_req.cpp b/src/f/f_op/f_op_scene_req.cpp index 6f8611c6c23..453b2939773 100644 --- a/src/f/f_op/f_op_scene_req.cpp +++ b/src/f/f_op/f_op_scene_req.cpp @@ -2,7 +2,7 @@ #include "f/f_op/f_op_scene_req.h" #include "f/f_op/f_op_overlap_mng.h" -#include "f/f_pc/f_pc_node_req.h" +#include "f/f_pc/f_pc_executor.h" #include "global.h" // additional symbols needed for f_op_scene_req.cpp @@ -43,7 +43,7 @@ void func_8001EFB0(void); // additional symbols needed for f_op_scene_req.cpp // autogenerated by split.py v0.4 at 2021-03-20 21:43:05.095976 extern u8 lbl_803A38C8; -extern u8 lbl_80450CE0; +extern u32 l_fopScnRq_IsUsingOfOverlap; scene_request_class* fopScnRq_phase_ClearOverlap(scene_request_class* pScnRq) { pScnRq = 0; @@ -82,14 +82,12 @@ scene_request_class* fopScnRq_phase_IsDoneOverlap(scene_request_class* pScnRq) { return pScnRq; } -// asm void fopScnRq_phase_IsDoneOverlap(scene_request_class*) { -// nofralloc -// #include "f/f_op/f_op_scene_req/asm/func_8001EEB4.s" -// } - -asm void fopScnRq_phase_Done(scene_request_class*) { - nofralloc -#include "f/f_op/f_op_scene_req/asm/func_8001EEE4.s" +int fopScnRq_phase_Done(scene_request_class* pScnRq) { + if (pScnRq->mCrtReq.mParameter != 1) { + fopScnPause_Disable((scene_class*)fpcEx_SearchByID(pScnRq->mCrtReq.mCreatingID)); + } + l_fopScnRq_IsUsingOfOverlap = 0; + return 2; } asm void fopScnRq_Execute(scene_request_class*) {