From b0499177ef7e08594fbac1665d1ac6f8dc9d0d47 Mon Sep 17 00:00:00 2001 From: Pheenoh Date: Sat, 20 Feb 2021 10:25:13 -0500 Subject: [PATCH] fopScnM_SearchByID attempt --- asm/d/a/no/chg/d_a_no_chg_room.s | 2 +- include/d/d_stage/asm/func_80025014.s | 2 +- include/f/f_op/f_op_actor_mng/asm/func_800198C4.s | 2 +- include/f/f_op/f_op_actor_mng/asm/func_80019934.s | 2 +- include/f/f_op/f_op_actor_mng/asm/func_8001CA1C.s | 2 +- include/f/f_op/f_op_actor_mng/asm/func_8001CBA0.s | 2 +- include/f/f_op/f_op_msg_mng/asm/func_8001F9B4.s | 2 +- include/f/f_op/f_op_scene_iter.h | 10 ++++++++++ include/f/f_op_scene_mng/asm/func_8001ECB0.s | 2 +- src/d/d_stage.cpp | 2 ++ src/f/f_op/f_op_actor_mng.cpp | 1 + src/f/f_op/f_op_actor_tag.cpp | 3 --- src/f/f_op/f_op_msg_mng.cpp | 2 ++ src/f/f_op/f_op_scene_iter.cpp | 7 ++----- src/f/f_op/f_op_scene_mng.cpp | 12 +++++++++--- src/f/f_pc/f_pc_manager.cpp | 4 ++-- 16 files changed, 36 insertions(+), 21 deletions(-) create mode 100644 include/f/f_op/f_op_scene_iter.h diff --git a/asm/d/a/no/chg/d_a_no_chg_room.s b/asm/d/a/no/chg/d_a_no_chg_room.s index 981588f0829..0ae005a5f61 100644 --- a/asm/d/a/no/chg/d_a_no_chg_room.s +++ b/asm/d/a/no/chg/d_a_no_chg_room.s @@ -47,7 +47,7 @@ lbl_80145278: /* 80145280 001421C0 28 00 00 01 */ cmplwi r0, 1 /* 80145284 001421C4 40 82 00 2C */ bne lbl_801452B0 /* 80145288 001421C8 80 64 03 FC */ lwz r3, 0x3fc(r4) -/* 8014528C 001421CC 4B ED 9A 25 */ bl fopScnM_SearchByID +/* 8014528C 001421CC 4B ED 9A 25 */ bl fopScnM_SearchByID__FUi /* 80145290 001421D0 88 03 01 D4 */ lbz r0, 0x1d4(r3) /* 80145294 001421D4 7C 00 07 75 */ extsb. r0, r0 /* 80145298 001421D8 40 80 00 10 */ bge lbl_801452A8 diff --git a/include/d/d_stage/asm/func_80025014.s b/include/d/d_stage/asm/func_80025014.s index 2afcd9798ec..e59945394c2 100644 --- a/include/d/d_stage/asm/func_80025014.s +++ b/include/d/d_stage/asm/func_80025014.s @@ -157,7 +157,7 @@ lbl_80025208: /* 80025254 00022194 7F A4 EB 78 */ mr r4, r29 /* 80025258 00022198 4B FF FC A5 */ bl dStage_actorCreate /* 8002525C 0002219C 80 6D 87 E0 */ lwz r3, lbl_80450D60-_SDA_BASE_(r13) -/* 80025260 000221A0 4B FF 9A 51 */ bl fopScnM_SearchByID +/* 80025260 000221A0 4B FF 9A 51 */ bl fopScnM_SearchByID__FUi /* 80025264 000221A4 A8 03 00 08 */ lha r0, 8(r3) /* 80025268 000221A8 2C 00 00 0B */ cmpwi r0, 0xb /* 8002526C 000221AC 40 82 00 30 */ bne lbl_8002529C diff --git a/include/f/f_op/f_op_actor_mng/asm/func_800198C4.s b/include/f/f_op/f_op_actor_mng/asm/func_800198C4.s index 1fdc40db173..4ac8c1342a6 100644 --- a/include/f/f_op/f_op_actor_mng/asm/func_800198C4.s +++ b/include/f/f_op/f_op_actor_mng/asm/func_800198C4.s @@ -5,7 +5,7 @@ /* 800198D4 00016814 93 C1 00 08 */ stw r30, 8(r1) /* 800198D8 00016818 7C 7E 1B 78 */ mr r30, r3 /* 800198DC 0001681C 80 6D 87 E0 */ lwz r3, lbl_80450D60-_SDA_BASE_(r13) -/* 800198E0 00016820 48 00 53 D1 */ bl fopScnM_SearchByID +/* 800198E0 00016820 48 00 53 D1 */ bl fopScnM_SearchByID__FUi /* 800198E4 00016824 7C 7F 1B 78 */ mr r31, r3 /* 800198E8 00016828 80 6D 87 C0 */ lwz r3, lbl_80450D40-_SDA_BASE_(r13) /* 800198EC 0001682C 80 9F 00 B4 */ lwz r4, 0xb4(r31) diff --git a/include/f/f_op/f_op_actor_mng/asm/func_80019934.s b/include/f/f_op/f_op_actor_mng/asm/func_80019934.s index cf71a112516..031e5a6d650 100644 --- a/include/f/f_op/f_op_actor_mng/asm/func_80019934.s +++ b/include/f/f_op/f_op_actor_mng/asm/func_80019934.s @@ -11,7 +11,7 @@ /* 8001995C 0001689C 1C 04 04 04 */ mulli r0, r4, 0x404 /* 80019960 000168A0 7C 63 02 14 */ add r3, r3, r0 /* 80019964 000168A4 80 63 03 FC */ lwz r3, 0x3fc(r3) -/* 80019968 000168A8 48 00 53 49 */ bl fopScnM_SearchByID +/* 80019968 000168A8 48 00 53 49 */ bl fopScnM_SearchByID__FUi /* 8001996C 000168AC 7C 7F 1B 78 */ mr r31, r3 /* 80019970 000168B0 80 6D 87 C0 */ lwz r3, lbl_80450D40-_SDA_BASE_(r13) /* 80019974 000168B4 80 9F 00 B4 */ lwz r4, 0xb4(r31) diff --git a/include/f/f_op/f_op_actor_mng/asm/func_8001CA1C.s b/include/f/f_op/f_op_actor_mng/asm/func_8001CA1C.s index 8d7e237ba3b..c3200a7f311 100644 --- a/include/f/f_op/f_op_actor_mng/asm/func_8001CA1C.s +++ b/include/f/f_op/f_op_actor_mng/asm/func_8001CA1C.s @@ -8,7 +8,7 @@ /* 8001CA38 00019978 1C 00 04 04 */ mulli r0, r0, 0x404 /* 8001CA3C 0001997C 7C 64 02 14 */ add r3, r4, r0 /* 8001CA40 00019980 80 63 03 FC */ lwz r3, 0x3fc(r3) -/* 8001CA44 00019984 48 00 22 6D */ bl fopScnM_SearchByID +/* 8001CA44 00019984 48 00 22 6D */ bl fopScnM_SearchByID__FUi /* 8001CA48 00019988 7C 7F 1B 78 */ mr r31, r3 /* 8001CA4C 0001998C 3C 60 80 40 */ lis r3, g_dComIfG_gameInfo@ha /* 8001CA50 00019990 38 63 61 C0 */ addi r3, r3, g_dComIfG_gameInfo@l diff --git a/include/f/f_op/f_op_actor_mng/asm/func_8001CBA0.s b/include/f/f_op/f_op_actor_mng/asm/func_8001CBA0.s index 9040db9b0d6..7b337559845 100644 --- a/include/f/f_op/f_op_actor_mng/asm/func_8001CBA0.s +++ b/include/f/f_op/f_op_actor_mng/asm/func_8001CBA0.s @@ -19,7 +19,7 @@ /* 8001CBE8 00019B28 1C 00 04 04 */ mulli r0, r0, 0x404 /* 8001CBEC 00019B2C 7C 63 02 14 */ add r3, r3, r0 /* 8001CBF0 00019B30 80 63 03 FC */ lwz r3, 0x3fc(r3) -/* 8001CBF4 00019B34 48 00 20 BD */ bl fopScnM_SearchByID +/* 8001CBF4 00019B34 48 00 20 BD */ bl fopScnM_SearchByID__FUi /* 8001CBF8 00019B38 28 03 00 00 */ cmplwi r3, 0 /* 8001CBFC 00019B3C 41 82 00 14 */ beq lbl_8001CC10 /* 8001CC00 00019B40 7F E3 FB 78 */ mr r3, r31 diff --git a/include/f/f_op/f_op_msg_mng/asm/func_8001F9B4.s b/include/f/f_op/f_op_msg_mng/asm/func_8001F9B4.s index 1a244e7babc..497cbbae5fc 100644 --- a/include/f/f_op/f_op_msg_mng/asm/func_8001F9B4.s +++ b/include/f/f_op/f_op_msg_mng/asm/func_8001F9B4.s @@ -5,7 +5,7 @@ /* 8001F9C4 0001C904 93 C1 00 08 */ stw r30, 8(r1) /* 8001F9C8 0001C908 7C 7E 1B 78 */ mr r30, r3 /* 8001F9CC 0001C90C 80 6D 87 E0 */ lwz r3, lbl_80450D60-_SDA_BASE_(r13) -/* 8001F9D0 0001C910 4B FF F2 E1 */ bl fopScnM_SearchByID +/* 8001F9D0 0001C910 4B FF F2 E1 */ bl fopScnM_SearchByID__FUi /* 8001F9D4 0001C914 7C 7F 1B 78 */ mr r31, r3 /* 8001F9D8 0001C918 80 6D 87 C0 */ lwz r3, lbl_80450D40-_SDA_BASE_(r13) /* 8001F9DC 0001C91C 80 9F 00 B4 */ lwz r4, 0xb4(r31) diff --git a/include/f/f_op/f_op_scene_iter.h b/include/f/f_op/f_op_scene_iter.h new file mode 100644 index 00000000000..59b1013256e --- /dev/null +++ b/include/f/f_op/f_op_scene_iter.h @@ -0,0 +1,10 @@ +#ifndef F_F_OP_SCENE_ITER_H_ +#define F_F_OP_SCENE_ITER_H_ + +#include "dolphin/types.h" + +typedef void* (*fop_ScnItFunc)(void*,void*); + +void* fopScnIt_Judge(fop_ScnItFunc pFunc1, void* pFunc2); + +#endif \ No newline at end of file diff --git a/include/f/f_op_scene_mng/asm/func_8001ECB0.s b/include/f/f_op_scene_mng/asm/func_8001ECB0.s index 58a19b17d26..49920a75535 100644 --- a/include/f/f_op_scene_mng/asm/func_8001ECB0.s +++ b/include/f/f_op_scene_mng/asm/func_8001ECB0.s @@ -7,7 +7,7 @@ /*.global fpcSch_JudgeByID*/ /* 8001ECC4 0001BC04 38 63 35 90 */ addi r3, r3, fpcSch_JudgeByID@l /* 8001ECC8 0001BC08 38 81 00 08 */ addi r4, r1, 8 -/* 8001ECCC 0001BC0C 4B FF FF A9 */ bl fopScnIt_Judge +/* 8001ECCC 0001BC0C 4B FF FF A9 */ bl fopScnIt_Judge__FPFPvPv_PvPv /* 8001ECD0 0001BC10 80 01 00 14 */ lwz r0, 0x14(r1) /* 8001ECD4 0001BC14 7C 08 03 A6 */ mtlr r0 /* 8001ECD8 0001BC18 38 21 00 10 */ addi r1, r1, 0x10 diff --git a/src/d/d_stage.cpp b/src/d/d_stage.cpp index cac530a50e0..f3585958b2e 100644 --- a/src/d/d_stage.cpp +++ b/src/d/d_stage.cpp @@ -4,11 +4,13 @@ #include "d/d_com/d_com_inf_game/d_com_inf_game.h" #include "f/f_op/f_op_actor_mng.h" #include "f/f_op/f_op_camera_mng.h" +#include "f/f_op/f_op_scene_iter.h" #include "f/f_pc/f_pc_stdcreate_req.h" #include "global.h" #include "m_Do/m_Do_Reset/m_Do_Reset.h" extern "C" { + void fopScnM_SearchByID__FUi(void); void fopCamM_Create__FisPv(void); char* strcpy(char*, const char*); int strcmp(const char*, const char*); diff --git a/src/f/f_op/f_op_actor_mng.cpp b/src/f/f_op/f_op_actor_mng.cpp index 0b71943398a..a05abba26f9 100644 --- a/src/f/f_op/f_op_actor_mng.cpp +++ b/src/f/f_op/f_op_actor_mng.cpp @@ -50,6 +50,7 @@ const char* lbl_80378A49 = "\x00\x00\x00\x00\x00\x00"; // additional symbols needed for f_op_actor_mng.cpp // autogenerated by split.py v0.4 at 2021-01-25 19:11:04.087547 extern "C" { +void fopScnM_SearchByID__FUi(void); void J3DTexMtxInfo_NS_setEffectMtx(void); void J3DUClipper_NS_calcViewFrustum(void); void MtxPosition__FP4cXyzP4cXyz(void); diff --git a/src/f/f_op/f_op_actor_tag.cpp b/src/f/f_op/f_op_actor_tag.cpp index 6665095c802..8916a63f02f 100644 --- a/src/f/f_op/f_op_actor_tag.cpp +++ b/src/f/f_op/f_op_actor_tag.cpp @@ -2,8 +2,6 @@ #include "SComponent/c_tag.h" #include "global.h" -extern "C" { - u32 fopAcTg_ToActorQ(create_tag_class* c) { return cTg_Addition(&lbl_803A35E0, c); } @@ -15,5 +13,4 @@ u32 fopAcTg_ActorQTo(create_tag_class* pTag) { u32 fopAcTg_Init(create_tag_class* pTag, void* data) { cTg_Create(pTag, data); return 1; -} } \ No newline at end of file diff --git a/src/f/f_op/f_op_msg_mng.cpp b/src/f/f_op/f_op_msg_mng.cpp index 158c9fe8e81..7aa8f11455d 100644 --- a/src/f/f_op/f_op_msg_mng.cpp +++ b/src/f/f_op/f_op_msg_mng.cpp @@ -1,11 +1,13 @@ /* f_op_msg_mng.cpp autogenerated by split.py v0.4 at 2021-02-15 20:21:51.945184 */ #include "d/d_com/d_com_inf_game/d_com_inf_game.h" +#include "f/f_op/f_op_scene_iter.h" #include "global.h" // additional symbols needed for f_op_msg_mng.cpp // autogenerated by split.py v0.4 at 2021-02-15 20:21:51.945228 extern "C" { + void fopScnM_SearchByID__FUi(void); void _restgpr_26(void); void _restgpr_27(void); void _restgpr_28(void); diff --git a/src/f/f_op/f_op_scene_iter.cpp b/src/f/f_op/f_op_scene_iter.cpp index 4a4a1f1e0e0..3cffb50a6b7 100644 --- a/src/f/f_op/f_op_scene_iter.cpp +++ b/src/f/f_op/f_op_scene_iter.cpp @@ -1,6 +1,7 @@ /* f_op_scene_iter.cpp autogenerated by split.py v0.4 at 2021-02-15 20:27:34.795954 */ #include "SComponent/c_tag_iter.h" +#include "f/f_op/f_op_scene_iter.h" #include "global.h" // additional symbols needed for f_op_scene_iter.cpp @@ -14,11 +15,7 @@ void fopScnIt_Judge(void); // autogenerated by split.py v0.4 at 2021-02-15 20:27:34.795978 extern u8 lbl_803A3918; -extern "C" { -// fopScnIt_Judge__FPFPvPv_PvPv -// fopScnIt_Judge(void* (*)(void*, void*), void*) -asm void fopScnIt_Judge(void) { +asm void* fopScnIt_Judge(fop_ScnItFunc pFunc1, void* pFunc2) { nofralloc #include "f/f_op/f_op_scene_iter/asm/func_8001EC74.s" } -}; diff --git a/src/f/f_op/f_op_scene_mng.cpp b/src/f/f_op/f_op_scene_mng.cpp index 1af9e049712..0a91d44850f 100644 --- a/src/f/f_op/f_op_scene_mng.cpp +++ b/src/f/f_op/f_op_scene_mng.cpp @@ -1,12 +1,12 @@ /* f_op_scene_mng.cpp autogenerated by split.py v0.4 at 2021-02-13 20:33:37.409351 */ #include "f/f_op/f_op_scene_mng.h" +#include "f/f_op/f_op_scene_iter.h" #include "global.h" // additional symbols needed for f_op_scene_mng.cpp // autogenerated by split.py v0.4 at 2021-02-13 20:33:37.409404 extern "C" { -void fopScnIt_Judge(void); void fopScnM_ChangeReq(void); void fopScnM_CreateReq(void); void fopScnM_DeleteReq(void); @@ -17,20 +17,26 @@ void fopScnRq_Handler(void); void fopScnRq_ReRequest(void); void fopScnRq_Request(void); void fpcSch_JudgeByID(void); +void fopScnIt_Judge__FPFPvPv_PvPv(void); } // additional symbols needed for f_op_scene_mng.cpp // autogenerated by split.py v0.4 at 2021-02-13 20:33:37.409412 extern u8 lbl_804505B8; -extern "C" { // fopScnM_SearchByID__FUi // fopScnM_SearchByID(unsigned int) -asm void fopScnM_SearchByID(void) { +// void* fopScnM_SearchByID(unsigned int id) { +// unsigned int tmp = id + 8; +// return fopScnIt_Judge((fop_ScnItFunc)fpcSch_JudgeByID, (void*)tmp); +// } + +asm void* fopScnM_SearchByID(unsigned int) { nofralloc #include "f/f_op_scene_mng/asm/func_8001ECB0.s" } +extern "C" { // fopScnM_ChangeReq__FP11scene_classssUs // fopScnM_ChangeReq(scene_class*, s16, s16, u16) asm void fopScnM_ChangeReq(void) { diff --git a/src/f/f_pc/f_pc_manager.cpp b/src/f/f_pc/f_pc_manager.cpp index f0e946b8a66..ee95369db73 100644 --- a/src/f/f_pc/f_pc_manager.cpp +++ b/src/f/f_pc/f_pc_manager.cpp @@ -82,12 +82,12 @@ void fpcM_Management(fpcM_ManagementFunc pFunc1, fpcM_ManagementFunc pFunc2) { } fpcPi_Handler(); fpcCt_Handler(); - if (pFunc1 != NULL) { + if (pFunc1) { pFunc1(); } fpcEx_Handler((cNdIt_MethodFunc)fpcM_Execute); fpcDw_Handler((void*)fpcM_DrawIterater, fpcM_Draw); - if (pFunc2 != NULL) { + if (pFunc2) { pFunc2(); } g_dComIfG_gameInfo.getPlay().drawSimpleModel();