diff --git a/asm/d/ovlp/d_ovlp_fade.s b/asm/d/ovlp/d_ovlp_fade.s index ab569b167e1..2bca4f44ce7 100644 --- a/asm/d/ovlp/d_ovlp_fade.s +++ b/asm/d/ovlp/d_ovlp_fade.s @@ -84,7 +84,7 @@ lbl_80252284: /* 80252290 0024F1D0 90 1E 00 CC */ stw r0, 0xcc(r30) /* 80252294 0024F1D4 40 82 00 18 */ bne lbl_802522AC /* 80252298 0024F1D8 7F C3 F3 78 */ mr r3, r30 -/* 8025229C 0024F1DC 4B DC C2 81 */ bl fopOvlpM_Done +/* 8025229C 0024F1DC 4B DC C2 81 */ bl fopOvlpM_Done__FP18overlap_task_class /* 802522A0 0024F1E0 80 7E 00 CC */ lwz r3, 0xcc(r30) /* 802522A4 0024F1E4 38 03 00 01 */ addi r0, r3, 1 /* 802522A8 0024F1E8 90 1E 00 CC */ stw r0, 0xcc(r30) @@ -101,7 +101,7 @@ dOvlpFd_Wait: /* 802522C8 0024F208 94 21 FF F0 */ stwu r1, -0x10(r1) /* 802522CC 0024F20C 7C 08 02 A6 */ mflr r0 /* 802522D0 0024F210 90 01 00 14 */ stw r0, 0x14(r1) -/* 802522D4 0024F214 4B DC C2 31 */ bl fopOvlpM_IsOutReq +/* 802522D4 0024F214 4B DC C2 31 */ bl fopOvlpM_IsOutReq__FP18overlap_task_class /* 802522D8 0024F218 2C 03 00 00 */ cmpwi r3, 0 /* 802522DC 0024F21C 41 82 00 10 */ beq lbl_802522EC .global dOvlpFd_FadeOut @@ -197,7 +197,7 @@ lbl_802523C8: /* 80252404 0024F344 4E 80 04 21 */ bctrl lbl_80252408: /* 80252408 0024F348 7F E3 FB 78 */ mr r3, r31 -/* 8025240C 0024F34C 4B DC C1 11 */ bl fopOvlpM_Done +/* 8025240C 0024F34C 4B DC C1 11 */ bl fopOvlpM_Done__FP18overlap_task_class lbl_80252410: /* 80252410 0024F350 38 60 00 01 */ li r3, 1 lbl_80252414: diff --git a/asm/d/ovlp/d_ovlp_fade2.s b/asm/d/ovlp/d_ovlp_fade2.s index f6cf7327af2..f0654b7b75f 100644 --- a/asm/d/ovlp/d_ovlp_fade2.s +++ b/asm/d/ovlp/d_ovlp_fade2.s @@ -377,7 +377,7 @@ dOvlpFd2_c: /* 80252A3C 0024F97C 80 04 00 08 */ lwz r0, 8(r4) /* 80252A40 0024F980 90 1F 00 D4 */ stw r0, 0xd4(r31) /* 80252A44 0024F984 7F E3 FB 78 */ mr r3, r31 -/* 80252A48 0024F988 4B DC BA D5 */ bl fopOvlpM_Done +/* 80252A48 0024F988 4B DC BA D5 */ bl fopOvlpM_Done__FP18overlap_task_class /* 80252A4C 0024F98C 38 00 FF F4 */ li r0, -12 /* 80252A50 0024F990 98 1F 01 1D */ stb r0, 0x11d(r31) lbl_80252A54: @@ -423,7 +423,7 @@ lbl_80252A64: /* 80252AEC 0024FA2C 7C 00 07 75 */ extsb. r0, r0 /* 80252AF0 0024FA30 40 82 00 48 */ bne lbl_80252B38 /* 80252AF4 0024FA34 7F E3 FB 78 */ mr r3, r31 -/* 80252AF8 0024FA38 4B DC BA 0D */ bl fopOvlpM_IsOutReq +/* 80252AF8 0024FA38 4B DC BA 0D */ bl fopOvlpM_IsOutReq__FP18overlap_task_class /* 80252AFC 0024FA3C 2C 03 00 00 */ cmpwi r3, 0 /* 80252B00 0024FA40 41 82 00 38 */ beq lbl_80252B38 /* 80252B04 0024FA44 4B DC B9 C1 */ bl fopOvlpM_SceneIsStart @@ -545,7 +545,7 @@ lbl_80252C54: /* 80252CC0 0024FC00 48 00 00 38 */ b lbl_80252CF8 lbl_80252CC4: /* 80252CC4 0024FC04 7F E3 FB 78 */ mr r3, r31 -/* 80252CC8 0024FC08 4B DC B8 55 */ bl fopOvlpM_Done +/* 80252CC8 0024FC08 4B DC B8 55 */ bl fopOvlpM_Done__FP18overlap_task_class /* 80252CCC 0024FC0C 38 00 00 01 */ li r0, 1 /* 80252CD0 0024FC10 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 80252CD4 0024FC14 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l diff --git a/asm/d/ovlp/d_ovlp_fade3.s b/asm/d/ovlp/d_ovlp_fade3.s index f5cb04b412b..d7d281ef857 100644 --- a/asm/d/ovlp/d_ovlp_fade3.s +++ b/asm/d/ovlp/d_ovlp_fade3.s @@ -434,7 +434,7 @@ lbl_80253500: /* 80253570 002504B0 80 04 00 08 */ lwz r0, 8(r4) /* 80253574 002504B4 90 1F 00 D4 */ stw r0, 0xd4(r31) /* 80253578 002504B8 7F E3 FB 78 */ mr r3, r31 -/* 8025357C 002504BC 4B DC AF A1 */ bl fopOvlpM_Done +/* 8025357C 002504BC 4B DC AF A1 */ bl fopOvlpM_Done__FP18overlap_task_class /* 80253580 002504C0 38 00 FF FF */ li r0, -1 /* 80253584 002504C4 98 1F 01 1D */ stb r0, 0x11d(r31) lbl_80253588: @@ -460,7 +460,7 @@ lbl_80253598: /* 802535D0 00250510 88 03 01 1D */ lbz r0, 0x11d(r3) /* 802535D4 00250514 7C 00 07 75 */ extsb. r0, r0 /* 802535D8 00250518 40 82 00 44 */ bne lbl_8025361C -/* 802535DC 0025051C 4B DC AF 29 */ bl fopOvlpM_IsOutReq +/* 802535DC 0025051C 4B DC AF 29 */ bl fopOvlpM_IsOutReq__FP18overlap_task_class /* 802535E0 00250520 2C 03 00 00 */ cmpwi r3, 0 /* 802535E4 00250524 41 82 00 38 */ beq lbl_8025361C /* 802535E8 00250528 4B DC AE DD */ bl fopOvlpM_SceneIsStart @@ -571,7 +571,7 @@ lbl_8025371C: /* 80253778 002506B8 48 00 00 20 */ b lbl_80253798 lbl_8025377C: /* 8025377C 002506BC 7F E3 FB 78 */ mr r3, r31 -/* 80253780 002506C0 4B DC AD 9D */ bl fopOvlpM_Done +/* 80253780 002506C0 4B DC AD 9D */ bl fopOvlpM_Done__FP18overlap_task_class /* 80253784 002506C4 38 00 00 01 */ li r0, 1 /* 80253788 002506C8 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 8025378C 002506CC 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l diff --git a/asm/d/s/d_s_name.s b/asm/d/s/d_s_name.s index 2c6ad84615c..6c94491455d 100644 --- a/asm/d/s/d_s_name.s +++ b/asm/d/s/d_s_name.s @@ -300,7 +300,7 @@ dScnName_c_NS_execute: /* 80258BD0 00255B10 90 01 00 14 */ stw r0, 0x14(r1) /* 80258BD4 00255B14 93 E1 00 0C */ stw r31, 0xc(r1) /* 80258BD8 00255B18 7C 7F 1B 78 */ mr r31, r3 -/* 80258BDC 00255B1C 4B DC 59 7D */ bl fopOvlpM_IsPeek +/* 80258BDC 00255B1C 4B DC 59 7D */ bl fopOvlpM_IsPeek__Fv /* 80258BE0 00255B20 2C 03 00 00 */ cmpwi r3, 0 /* 80258BE4 00255B24 40 82 00 0C */ bne lbl_80258BF0 /* 80258BE8 00255B28 7F E3 FB 78 */ mr r3, r31 @@ -665,7 +665,7 @@ lbl_802590E4: /* 80259110 00256050 80 03 00 00 */ lwz r0, 0(r3) /* 80259114 00256054 2C 00 00 00 */ cmpwi r0, 0 /* 80259118 00256058 40 82 00 94 */ bne lbl_802591AC -/* 8025911C 0025605C 4B DC 54 3D */ bl fopOvlpM_IsPeek +/* 8025911C 0025605C 4B DC 54 3D */ bl fopOvlpM_IsPeek__Fv /* 80259120 00256060 2C 03 00 00 */ cmpwi r3, 0 /* 80259124 00256064 40 82 00 88 */ bne lbl_802591AC /* 80259128 00256068 4B DD 58 4D */ bl dComIfGs_gameStart diff --git a/asm/d/s/d_s_play.s b/asm/d/s/d_s_play.s index 4b521c1fa38..16211631a37 100644 --- a/asm/d/s/d_s_play.s +++ b/asm/d/s/d_s_play.s @@ -72,7 +72,7 @@ dScnPly_env_debugHIO_c: /* 802594E0 00256420 3B C3 0F 38 */ addi r30, r3, 0xf38 /* 802594E4 00256424 7F C3 F3 78 */ mr r3, r30 /* 802594E8 00256428 4B E1 B4 55 */ bl dBgS_NS_ClrMoveFlag -/* 802594EC 0025642C 4B DC 50 6D */ bl fopOvlpM_IsPeek +/* 802594EC 0025642C 4B DC 50 6D */ bl fopOvlpM_IsPeek__Fv /* 802594F0 00256430 2C 03 00 00 */ cmpwi r3, 0 /* 802594F4 00256434 40 82 01 B8 */ bne lbl_802596AC /* 802594F8 00256438 7F 83 E3 78 */ mr r3, r28 @@ -278,7 +278,7 @@ lbl_8025979C: /* 802597D4 00256714 98 0D 87 E8 */ stb r0, lbl_80450D68-_SDA_BASE_(r13) /* 802597D8 00256718 38 00 FF FF */ li r0, -1 /* 802597DC 0025671C 98 0D 80 70 */ stb r0, lbl_804505F0-_SDA_BASE_(r13) -/* 802597E0 00256720 4B DC 4D 79 */ bl fopOvlpM_IsPeek +/* 802597E0 00256720 4B DC 4D 79 */ bl fopOvlpM_IsPeek__Fv /* 802597E4 00256724 2C 03 00 00 */ cmpwi r3, 0 /* 802597E8 00256728 40 82 00 48 */ bne lbl_80259830 /* 802597EC 0025672C 88 0D 86 3A */ lbz r0, lbl_80450BBA-_SDA_BASE_(r13) @@ -571,7 +571,7 @@ dScnPly_c_NS_offReset: /* 80259C10 00256B50 88 03 01 D4 */ lbz r0, 0x1d4(r3) /* 80259C14 00256B54 28 00 00 00 */ cmplwi r0, 0 /* 80259C18 00256B58 41 82 00 44 */ beq lbl_80259C5C -/* 80259C1C 00256B5C 4B DC 49 3D */ bl fopOvlpM_IsPeek +/* 80259C1C 00256B5C 4B DC 49 3D */ bl fopOvlpM_IsPeek__Fv /* 80259C20 00256B60 2C 03 00 00 */ cmpwi r3, 0 /* 80259C24 00256B64 40 82 00 38 */ bne lbl_80259C5C /* 80259C28 00256B68 38 80 00 00 */ li r4, 0 diff --git a/asm/f/op/scene/f_op_scene_req.s b/asm/f/op/scene/f_op_scene_req.s index ce01e7e6bd1..f115d81ed52 100644 --- a/asm/f/op/scene/f_op_scene_req.s +++ b/asm/f/op/scene/f_op_scene_req.s @@ -40,7 +40,7 @@ lbl_8001EEA4: /* 8001EEB4 0001BDF4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8001EEB8 0001BDF8 7C 08 02 A6 */ mflr r0 /* 8001EEBC 0001BDFC 90 01 00 14 */ stw r0, 0x14(r1) -/* 8001EEC0 0001BE00 4B FF F6 B5 */ bl fopOvlpM_IsDone +/* 8001EEC0 0001BE00 4B FF F6 B5 */ bl fopOvlpM_IsDone__Fv /* 8001EEC4 0001BE04 2C 03 00 01 */ cmpwi r3, 1 /* 8001EEC8 0001BE08 38 60 00 00 */ li r3, 0 /* 8001EECC 0001BE0C 40 82 00 08 */ bne lbl_8001EED4 @@ -100,7 +100,7 @@ lbl_8001EF58: /* 8001EF88 0001BEC8 41 82 00 10 */ beq lbl_8001EF98 /* 8001EF8C 0001BECC 48 00 15 BD */ bl fopScnPause_Enable /* 8001EF90 0001BED0 80 7F 00 04 */ lwz r3, 4(r31) -/* 8001EF94 0001BED4 4B FF F5 AD */ bl fopOvlpM_ToldAboutID +/* 8001EF94 0001BED4 4B FF F5 AD */ bl fopOvlpM_ToldAboutID__FUi lbl_8001EF98: /* 8001EF98 0001BED8 38 60 00 01 */ li r3, 1 /* 8001EF9C 0001BEDC 83 E1 00 0C */ lwz r31, 0xc(r1) diff --git a/asm/sdata.s b/asm/sdata.s index 201f3ccf303..45e615fae08 100644 --- a/asm/sdata.s +++ b/asm/sdata.s @@ -29,8 +29,8 @@ lbl_804505A8: .global lbl_804505AC lbl_804505AC: .incbin "baserom.dol", 0x3D030C, 0x4 -.global lbl_804505B0 -lbl_804505B0: +.global l_fopOvlpM_overlap +l_fopOvlpM_overlap: .incbin "baserom.dol", 0x3D0310, 0x8 .global lbl_804505B8 lbl_804505B8: diff --git a/include/SComponent/c_request.h b/include/SComponent/c_request.h index 485c572c2de..34359d78ec9 100644 --- a/include/SComponent/c_request.h +++ b/include/SComponent/c_request.h @@ -1,10 +1,203 @@ #ifndef C_REQUEST_H_ #define C_REQUEST_H_ +#include "dolphin/types.h" #include "f/f_pc/f_pc_base.h" -#include "global.h" -struct request_base_class; +struct request_base_class { + u8 field_0x0; + u8 field_0x1; + u8 field_0x2; + u8 field_0x3; + u32 field_0x4; + u32 field_0x8; + u8 field_0xc; + u8 field_0xd; + u8 field_0xe; + u8 field_0xf; + u8 field_0x10; + u8 field_0x11; + u8 field_0x12; + u8 field_0x13; + u8 field_0x14; + u8 field_0x15; + u8 field_0x16; + u8 field_0x17; + u8 field_0x18; + u8 field_0x19; + u8 field_0x1a; + u8 field_0x1b; + u8 field_0x1c; + u8 field_0x1d; + u8 field_0x1e; + u8 field_0x1f; + u32* field_0x20; + u8 field_0x24; + u8 field_0x25; + u8 field_0x26; + u8 field_0x27; + u8 field_0x28; + u8 field_0x29; + u8 field_0x2a; + u8 field_0x2b; + u8 field_0x2c; + u8 field_0x2d; + u8 field_0x2e; + u8 field_0x2f; + u8 field_0x30; + u8 field_0x31; + u8 field_0x32; + u8 field_0x33; + u8 field_0x34; + u8 field_0x35; + u8 field_0x36; + u8 field_0x37; + u8 field_0x38; + u8 field_0x39; + u8 field_0x3a; + u8 field_0x3b; + u8 field_0x3c; + u8 field_0x3d; + u8 field_0x3e; + u8 field_0x3f; + u8 field_0x40; + u8 field_0x41; + u8 field_0x42; + u8 field_0x43; + u8 field_0x44; + u8 field_0x45; + u8 field_0x46; + u8 field_0x47; + u8 field_0x48; + u8 field_0x49; + u8 field_0x4a; + u8 field_0x4b; + u8 field_0x4c; + u8 field_0x4d; + u8 field_0x4e; + u8 field_0x4f; + u8 field_0x50; + u8 field_0x51; + u8 field_0x52; + u8 field_0x53; + u8 field_0x54; + u8 field_0x55; + u8 field_0x56; + u8 field_0x57; + u8 field_0x58; + u8 field_0x59; + u8 field_0x5a; + u8 field_0x5b; + u8 field_0x5c; + u8 field_0x5d; + u8 field_0x5e; + u8 field_0x5f; + u8 field_0x60; + u8 field_0x61; + u8 field_0x62; + u8 field_0x63; + u8 field_0x64; + u8 field_0x65; + u8 field_0x66; + u8 field_0x67; + u8 field_0x68; + u8 field_0x69; + u8 field_0x6a; + u8 field_0x6b; + u8 field_0x6c; + u8 field_0x6d; + u8 field_0x6e; + u8 field_0x6f; + u8 field_0x70; + u8 field_0x71; + u8 field_0x72; + u8 field_0x73; + u8 field_0x74; + u8 field_0x75; + u8 field_0x76; + u8 field_0x77; + u8 field_0x78; + u8 field_0x79; + u8 field_0x7a; + u8 field_0x7b; + u8 field_0x7c; + u8 field_0x7d; + u8 field_0x7e; + u8 field_0x7f; + u8 field_0x80; + u8 field_0x81; + u8 field_0x82; + u8 field_0x83; + u8 field_0x84; + u8 field_0x85; + u8 field_0x86; + u8 field_0x87; + u8 field_0x88; + u8 field_0x89; + u8 field_0x8a; + u8 field_0x8b; + u8 field_0x8c; + u8 field_0x8d; + u8 field_0x8e; + u8 field_0x8f; + u8 field_0x90; + u8 field_0x91; + u8 field_0x92; + u8 field_0x93; + u8 field_0x94; + u8 field_0x95; + u8 field_0x96; + u8 field_0x97; + u8 field_0x98; + u8 field_0x99; + u8 field_0x9a; + u8 field_0x9b; + u8 field_0x9c; + u8 field_0x9d; + u8 field_0x9e; + u8 field_0x9f; + u8 field_0xa0; + u8 field_0xa1; + u8 field_0xa2; + u8 field_0xa3; + u8 field_0xa4; + u8 field_0xa5; + u8 field_0xa6; + u8 field_0xa7; + u8 field_0xa8; + u8 field_0xa9; + u8 field_0xaa; + u8 field_0xab; + u8 field_0xac; + u8 field_0xad; + u8 field_0xae; + u8 field_0xaf; + u8 field_0xb0; + u8 field_0xb1; + u8 field_0xb2; + u8 field_0xb3; + u8 field_0xb4; + u8 field_0xb5; + u8 field_0xb6; + u8 field_0xb7; + u8 field_0xb8; + u8 field_0xb9; + u8 field_0xba; + u8 field_0xbb; + u8 field_0xbc; + u8 field_0xbd; + u8 field_0xbe; + u8 field_0xbf; + u8 field_0xc0; + u8 field_0xc1; + u8 field_0xc2; + u8 field_0xc3; + u8 field_0xc4; + u8 field_0xc5; + u8 field_0xc6; + u8 field_0xc7; + u32* field_0xc8; +}; int cReq_Is_Done(request_base_class*); int cReq_Done(request_base_class*); diff --git a/include/d/d_a/d_a_alink/asm/func_8011F460.s b/include/d/d_a/d_a_alink/asm/func_8011F460.s index b226447b489..61d87312b90 100644 --- a/include/d/d_a/d_a_alink/asm/func_8011F460.s +++ b/include/d/d_a/d_a_alink/asm/func_8011F460.s @@ -16,7 +16,7 @@ /* 8011F49C 0011C3DC 7D 89 03 A6 */ mtctr r12 /* 8011F4A0 0011C3E0 4E 80 04 21 */ bctrl lbl_8011F4A4: -/* 8011F4A4 0011C3E4 4B EF F0 B5 */ bl fopOvlpM_IsPeek +/* 8011F4A4 0011C3E4 4B EF F0 B5 */ bl fopOvlpM_IsPeek__Fv /* 8011F4A8 0011C3E8 2C 03 00 01 */ cmpwi r3, 1 /* 8011F4AC 0011C3EC 40 82 00 0C */ bne lbl_8011F4B8 /* 8011F4B0 0011C3F0 38 60 00 01 */ li r3, 1 diff --git a/include/f/f_op/f_op_overlap_mng.h b/include/f/f_op/f_op_overlap_mng.h index 80b8192540a..7de9206f455 100644 --- a/include/f/f_op/f_op_overlap_mng.h +++ b/include/f/f_op/f_op_overlap_mng.h @@ -1,6 +1,20 @@ #ifndef F_F_OP_OVERLAP_MNG_H_ #define F_F_OP_OVERLAP_MNG_H_ +#include "SComponent/c_request.h" +#include "dolphin/types.h" + +class overlap_task_class { +public: + /* 0x00 */ u8 field_0x00[0xC4]; + /* 0xC4 */ u8 field_0xc4; +}; + void fopOvlpM_Management(void); +BOOL fopOvlpM_IsOutReq(overlap_task_class* pTaskClass); +void fopOvlpM_Done(overlap_task_class* pTaskClass); +void fopOvlpM_ToldAboutID(unsigned int param_1); +u32 fopOvlpM_IsPeek(void); +int fopOvlpM_IsDone(void); #endif \ No newline at end of file diff --git a/include/f/f_op_overlap_mng/asm/func_8001E484.s b/include/f/f_op_overlap_mng/asm/func_8001E484.s index d9528c408c3..eefb2b5847b 100644 --- a/include/f/f_op_overlap_mng/asm/func_8001E484.s +++ b/include/f/f_op_overlap_mng/asm/func_8001E484.s @@ -1,7 +1,7 @@ /* 8001E484 0001B3C4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8001E488 0001B3C8 7C 08 02 A6 */ mflr r0 /* 8001E48C 0001B3CC 90 01 00 14 */ stw r0, 0x14(r1) -/* 8001E490 0001B3D0 80 6D 80 30 */ lwz r3, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E490 0001B3D0 80 6D 80 30 */ lwz r3, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E494 0001B3D4 28 03 00 00 */ cmplwi r3, 0 /* 8001E498 0001B3D8 41 82 00 18 */ beq lbl_8001E4B0 /* 8001E49C 0001B3DC 80 63 00 20 */ lwz r3, 0x20(r3) diff --git a/include/f/f_op_overlap_mng/asm/func_8001E4C4.s b/include/f/f_op_overlap_mng/asm/func_8001E4C4.s index 7ef1b12f046..ce4adccada5 100644 --- a/include/f/f_op_overlap_mng/asm/func_8001E4C4.s +++ b/include/f/f_op_overlap_mng/asm/func_8001E4C4.s @@ -1,7 +1,7 @@ /* 8001E4C4 0001B404 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8001E4C8 0001B408 7C 08 02 A6 */ mflr r0 /* 8001E4CC 0001B40C 90 01 00 14 */ stw r0, 0x14(r1) -/* 8001E4D0 0001B410 80 6D 80 30 */ lwz r3, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E4D0 0001B410 80 6D 80 30 */ lwz r3, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E4D4 0001B414 28 03 00 00 */ cmplwi r3, 0 /* 8001E4D8 0001B418 41 82 00 18 */ beq lbl_8001E4F0 /* 8001E4DC 0001B41C 80 63 00 20 */ lwz r3, 0x20(r3) diff --git a/include/f/f_op_overlap_mng/asm/func_8001E540.s b/include/f/f_op_overlap_mng/asm/func_8001E540.s index ce7490959bd..1e0cd795903 100644 --- a/include/f/f_op_overlap_mng/asm/func_8001E540.s +++ b/include/f/f_op_overlap_mng/asm/func_8001E540.s @@ -1,4 +1,4 @@ -/* 8001E540 0001B480 80 8D 80 30 */ lwz r4, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E540 0001B480 80 8D 80 30 */ lwz r4, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E544 0001B484 28 04 00 00 */ cmplwi r4, 0 /* 8001E548 0001B488 4D 82 00 20 */ beqlr /* 8001E54C 0001B48C 80 84 00 20 */ lwz r4, 0x20(r4) diff --git a/include/f/f_op_overlap_mng/asm/func_8001E558.s b/include/f/f_op_overlap_mng/asm/func_8001E558.s index f9e19e18a69..c39aaca7635 100644 --- a/include/f/f_op_overlap_mng/asm/func_8001E558.s +++ b/include/f/f_op_overlap_mng/asm/func_8001E558.s @@ -1,4 +1,4 @@ -/* 8001E558 0001B498 80 6D 80 30 */ lwz r3, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E558 0001B498 80 6D 80 30 */ lwz r3, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E55C 0001B49C 28 03 00 00 */ cmplwi r3, 0 /* 8001E560 0001B4A0 41 82 00 0C */ beq lbl_8001E56C /* 8001E564 0001B4A4 80 63 00 08 */ lwz r3, 8(r3) diff --git a/include/f/f_op_overlap_mng/asm/func_8001E574.s b/include/f/f_op_overlap_mng/asm/func_8001E574.s index 8f7b1bdef5f..4bd2ffaab79 100644 --- a/include/f/f_op_overlap_mng/asm/func_8001E574.s +++ b/include/f/f_op_overlap_mng/asm/func_8001E574.s @@ -1,7 +1,7 @@ /* 8001E574 0001B4B4 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8001E578 0001B4B8 7C 08 02 A6 */ mflr r0 /* 8001E57C 0001B4BC 90 01 00 14 */ stw r0, 0x14(r1) -/* 8001E580 0001B4C0 80 6D 80 30 */ lwz r3, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E580 0001B4C0 80 6D 80 30 */ lwz r3, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E584 0001B4C4 28 03 00 00 */ cmplwi r3, 0 /* 8001E588 0001B4C8 41 82 00 0C */ beq lbl_8001E594 /* 8001E58C 0001B4CC 48 24 82 49 */ bl cReq_Is_Done__FP18request_base_class diff --git a/include/f/f_op_overlap_mng/asm/func_8001E5A8.s b/include/f/f_op_overlap_mng/asm/func_8001E5A8.s index bb1008abdd7..54adc06b2fa 100644 --- a/include/f/f_op_overlap_mng/asm/func_8001E5A8.s +++ b/include/f/f_op_overlap_mng/asm/func_8001E5A8.s @@ -1,4 +1,4 @@ -/* 8001E5A8 0001B4E8 80 6D 80 30 */ lwz r3, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E5A8 0001B4E8 80 6D 80 30 */ lwz r3, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E5AC 0001B4EC 28 03 00 00 */ cmplwi r3, 0 /* 8001E5B0 0001B4F0 41 82 00 18 */ beq lbl_8001E5C8 /* 8001E5B4 0001B4F4 A0 03 00 04 */ lhz r0, 4(r3) diff --git a/include/f/f_op_overlap_mng/asm/func_8001E5D0.s b/include/f/f_op_overlap_mng/asm/func_8001E5D0.s index d6b37df04a8..b291f6de812 100644 --- a/include/f/f_op_overlap_mng/asm/func_8001E5D0.s +++ b/include/f/f_op_overlap_mng/asm/func_8001E5D0.s @@ -1,7 +1,7 @@ /* 8001E5D0 0001B510 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8001E5D4 0001B514 7C 08 02 A6 */ mflr r0 /* 8001E5D8 0001B518 90 01 00 14 */ stw r0, 0x14(r1) -/* 8001E5DC 0001B51C 80 6D 80 30 */ lwz r3, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E5DC 0001B51C 80 6D 80 30 */ lwz r3, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E5E0 0001B520 28 03 00 00 */ cmplwi r3, 0 /* 8001E5E4 0001B524 41 82 00 0C */ beq lbl_8001E5F0 /* 8001E5E8 0001B528 48 00 04 F1 */ bl fopOvlpReq_OverlapClr diff --git a/include/f/f_op_overlap_mng/asm/func_8001E604.s b/include/f/f_op_overlap_mng/asm/func_8001E604.s index 8037c20c37d..a00e202f557 100644 --- a/include/f/f_op_overlap_mng/asm/func_8001E604.s +++ b/include/f/f_op_overlap_mng/asm/func_8001E604.s @@ -3,14 +3,14 @@ /* 8001E60C 0001B54C 90 01 00 14 */ stw r0, 0x14(r1) /* 8001E610 0001B550 7C 66 1B 78 */ mr r6, r3 /* 8001E614 0001B554 7C 85 23 78 */ mr r5, r4 -/* 8001E618 0001B558 80 0D 80 30 */ lwz r0, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E618 0001B558 80 0D 80 30 */ lwz r0, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E61C 0001B55C 28 00 00 00 */ cmplwi r0, 0 /* 8001E620 0001B560 40 82 00 1C */ bne lbl_8001E63C /* 8001E624 0001B564 3C 60 80 3F */ lis r3, lbl_803F1DE8@ha /* 8001E628 0001B568 38 63 1D E8 */ addi r3, r3, lbl_803F1DE8@l /* 8001E62C 0001B56C 7C C4 33 78 */ mr r4, r6 /* 8001E630 0001B570 48 00 03 25 */ bl fopOvlpReq_Request -/* 8001E634 0001B574 90 6D 80 30 */ stw r3, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E634 0001B574 90 6D 80 30 */ stw r3, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E638 0001B578 48 00 00 08 */ b lbl_8001E640 lbl_8001E63C: /* 8001E63C 0001B57C 38 60 00 00 */ li r3, 0 diff --git a/include/f/f_op_overlap_mng/asm/func_8001E650.s b/include/f/f_op_overlap_mng/asm/func_8001E650.s index 307253574ff..29474a4ad52 100644 --- a/include/f/f_op_overlap_mng/asm/func_8001E650.s +++ b/include/f/f_op_overlap_mng/asm/func_8001E650.s @@ -1,7 +1,7 @@ /* 8001E650 0001B590 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8001E654 0001B594 7C 08 02 A6 */ mflr r0 /* 8001E658 0001B598 90 01 00 14 */ stw r0, 0x14(r1) -/* 8001E65C 0001B59C 80 6D 80 30 */ lwz r3, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E65C 0001B59C 80 6D 80 30 */ lwz r3, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E660 0001B5A0 28 03 00 00 */ cmplwi r3, 0 /* 8001E664 0001B5A4 41 82 00 24 */ beq lbl_8001E688 /* 8001E668 0001B5A8 48 00 03 89 */ bl fopOvlpReq_Handler @@ -12,7 +12,7 @@ /* 8001E67C 0001B5BC 48 00 00 0C */ b lbl_8001E688 lbl_8001E680: /* 8001E680 0001B5C0 38 00 00 00 */ li r0, 0 -/* 8001E684 0001B5C4 90 0D 80 30 */ stw r0, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E684 0001B5C4 90 0D 80 30 */ stw r0, l_fopOvlpM_overlap-_SDA_BASE_(r13) lbl_8001E688: /* 8001E688 0001B5C8 80 01 00 14 */ lwz r0, 0x14(r1) /* 8001E68C 0001B5CC 7C 08 03 A6 */ mtlr r0 diff --git a/include/f/f_op_overlap_mng/asm/func_8001E698.s b/include/f/f_op_overlap_mng/asm/func_8001E698.s index ae65d6467c3..3ec0dfd0f76 100644 --- a/include/f/f_op_overlap_mng/asm/func_8001E698.s +++ b/include/f/f_op_overlap_mng/asm/func_8001E698.s @@ -1,7 +1,7 @@ /* 8001E698 0001B5D8 94 21 FF F0 */ stwu r1, -0x10(r1) /* 8001E69C 0001B5DC 7C 08 02 A6 */ mflr r0 /* 8001E6A0 0001B5E0 90 01 00 14 */ stw r0, 0x14(r1) -/* 8001E6A4 0001B5E4 80 6D 80 30 */ lwz r3, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E6A4 0001B5E4 80 6D 80 30 */ lwz r3, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E6A8 0001B5E8 28 03 00 00 */ cmplwi r3, 0 /* 8001E6AC 0001B5EC 40 82 00 0C */ bne lbl_8001E6B8 /* 8001E6B0 0001B5F0 38 60 00 01 */ li r3, 1 @@ -11,7 +11,7 @@ lbl_8001E6B8: /* 8001E6BC 0001B5FC 2C 03 00 01 */ cmpwi r3, 1 /* 8001E6C0 0001B600 40 82 00 14 */ bne lbl_8001E6D4 /* 8001E6C4 0001B604 38 00 00 00 */ li r0, 0 -/* 8001E6C8 0001B608 90 0D 80 30 */ stw r0, lbl_804505B0-_SDA_BASE_(r13) +/* 8001E6C8 0001B608 90 0D 80 30 */ stw r0, l_fopOvlpM_overlap-_SDA_BASE_(r13) /* 8001E6CC 0001B60C 38 60 00 01 */ li r3, 1 /* 8001E6D0 0001B610 48 00 00 08 */ b lbl_8001E6D8 lbl_8001E6D4: diff --git a/src/d/d_a/d_a_alink.cpp b/src/d/d_a/d_a_alink.cpp index eb5cfe9f6f7..e29d9fe3f0c 100644 --- a/src/d/d_a/d_a_alink.cpp +++ b/src/d/d_a/d_a_alink.cpp @@ -11,6 +11,7 @@ #include "d/d_kankyo/d_kankyo.h" #include "f/f_op/f_op_actor_iter.h" #include "f/f_op/f_op_actor_mng.h" +#include "f/f_op/f_op_overlap_mng.h" #include "f/f_pc/f_pc_manager.h" #include "f/f_pc/f_pc_searcher.h" #include "m_Do/m_Do_audio/m_Do_audio.h" @@ -1156,7 +1157,6 @@ void fopKyM_create(void); void fopKyM_createWpillar(void); void fopMsgM_messageSet_X1_(void); void fopMsgM_SearchByID(void); -void fopOvlpM_IsPeek(void); void fpoAcM_relativePos(void); void freeAll__7JKRHeapFv(void); void func_80361C24(void); @@ -1164,6 +1164,7 @@ void func_80361D60(void); void func_80361F14(void); void func_80362018(void); void func_80362084(void); +void fopOvlpM_IsPeek__Fv(void); void __cvt_fp2unsigned(void); void getGlbResource__13JKRFileLoaderFPCcP13JKRFileLoader(void); void getLightDropNum__16dSv_light_drop_cCFUc(void); diff --git a/src/f/f_op/f_op_overlap_mng.cpp b/src/f/f_op/f_op_overlap_mng.cpp index bfa801f7355..77267518082 100644 --- a/src/f/f_op/f_op_overlap_mng.cpp +++ b/src/f/f_op/f_op_overlap_mng.cpp @@ -1,22 +1,19 @@ /* f_op_overlap_mng.cpp autogenerated by split.py v0.4 at 2021-02-13 20:35:13.072583 */ #include "f/f_op/f_op_overlap_mng.h" +#include "SComponent/c_request.h" #include "global.h" // additional symbols needed for f_op_overlap_mng.cpp // autogenerated by split.py v0.4 at 2021-02-13 20:35:13.072614 extern "C" { -void cReq_Done__FP18request_base_class(void); +// void cReq_Done__FP18request_base_class(void); void cReq_Is_Done__FP18request_base_class(void); void fopOvlpM_Cancel(void); void fopOvlpM_ClearOfReq(void); void fopOvlpM_Done(void); void fopOvlpM_Init(void); void fopOvlpM_IsDoingReq(void); -void fopOvlpM_IsDone(void); -void fopOvlpM_IsOutReq(void); -void fopOvlpM_IsPeek(void); -void fopOvlpM_Management(void); void fopOvlpM_Request(void); void fopOvlpM_SceneIsStart(void); void fopOvlpM_SceneIsStop(void); @@ -33,7 +30,7 @@ void fpcEx_SearchByID(void); // additional symbols needed for f_op_overlap_mng.cpp // autogenerated by split.py v0.4 at 2021-02-13 20:35:13.072619 extern u8 lbl_803F1DE8; -extern u8 lbl_804505B0; +extern request_base_class* l_fopOvlpM_overlap; extern "C" { // fopOvlpM_SceneIsStop__Fv @@ -49,42 +46,36 @@ asm void fopOvlpM_SceneIsStart(void) { nofralloc #include "f/f_op_overlap_mng/asm/func_8001E4C4.s" } +}; -// fopOvlpM_IsOutReq__FP18overlap_task_class -// fopOvlpM_IsOutReq(overlap_task_class*) -asm void fopOvlpM_IsOutReq(void) { +// 1 instruction off +#ifdef NONMATCHING +BOOL fopOvlpM_IsOutReq(overlap_task_class* pTaskClass) { + return pTaskClass->field_0xc4 == 2; +} +#else +asm BOOL fopOvlpM_IsOutReq(overlap_task_class* pTaskClass) { nofralloc #include "f/f_op_overlap_mng/asm/func_8001E504.s" } +#endif -// fopOvlpM_Done__FP18overlap_task_class -// fopOvlpM_Done(overlap_task_class*) -asm void fopOvlpM_Done(void) { - nofralloc -#include "f/f_op_overlap_mng/asm/func_8001E51C.s" +void fopOvlpM_Done(overlap_task_class* pTaskClass) { + cReq_Done((request_base_class*)&pTaskClass->field_0xc4); } -// fopOvlpM_ToldAboutID__FUi -// fopOvlpM_ToldAboutID(unsigned int) -asm void fopOvlpM_ToldAboutID(void) { - nofralloc -#include "f/f_op_overlap_mng/asm/func_8001E540.s" +void fopOvlpM_ToldAboutID(unsigned int param_1) { + l_fopOvlpM_overlap ? l_fopOvlpM_overlap->field_0x20[0x32] = param_1 : 0; } -// fopOvlpM_IsPeek__Fv -// fopOvlpM_IsPeek(void) -asm void fopOvlpM_IsPeek(void) { - nofralloc -#include "f/f_op_overlap_mng/asm/func_8001E558.s" +u32 fopOvlpM_IsPeek(void) { + return l_fopOvlpM_overlap ? l_fopOvlpM_overlap->field_0x8 : 0; } -// fopOvlpM_IsDone__Fv -// fopOvlpM_IsDone(void) -asm void fopOvlpM_IsDone(void) { - nofralloc -#include "f/f_op_overlap_mng/asm/func_8001E574.s" +int fopOvlpM_IsDone(void) { + return l_fopOvlpM_overlap ? cReq_Is_Done(l_fopOvlpM_overlap) : 0; } - +extern "C" { // fopOvlpM_IsDoingReq__Fv // fopOvlpM_IsDoingReq(void) asm void fopOvlpM_IsDoingReq(void) {