diff --git a/asm/sbss.s b/asm/sbss.s index 804a3cc6a60..fc270c8953f 100644 --- a/asm/sbss.s +++ b/asm/sbss.s @@ -362,8 +362,8 @@ lbl_80450CD8: .global l_fopScnRq_IsUsingOfOverlap l_fopScnRq_IsUsingOfOverlap: .skip 0x8 -.global lbl_80450CE8 -lbl_80450CE8: +.global fopKy_KANKYO_TYPE +fopKy_KANKYO_TYPE: .skip 0x8 .global lbl_80450CF0 lbl_80450CF0: diff --git a/include/f/f_op/f_op_kankyo/asm/func_8001F3B4.s b/include/f/f_op/f_op_kankyo/asm/func_8001F3B4.s index 7ff637d632e..6945f9e1570 100644 --- a/include/f/f_op/f_op_kankyo/asm/func_8001F3B4.s +++ b/include/f/f_op/f_op_kankyo/asm/func_8001F3B4.s @@ -8,7 +8,7 @@ /* 8001F3D0 0001C310 7C 00 07 75 */ extsb. r0, r0 /* 8001F3D4 0001C314 40 82 00 6C */ bne lbl_8001F440 /* 8001F3D8 0001C318 83 C3 00 10 */ lwz r30, 0x10(r3) -/* 8001F3DC 0001C31C 38 6D 87 68 */ la r3, lbl_80450CE8(r13) +/* 8001F3DC 0001C31C 38 6D 87 68 */ la r3, fopKy_KANKYO_TYPE(r13) /* 8001F3E0 0001C320 48 00 12 7D */ bl fpcBs_MakeOfType__FPi /* 8001F3E4 0001C324 90 7F 00 C0 */ stw r3, 0xc0(r31) /* 8001F3E8 0001C328 80 1E 00 24 */ lwz r0, 0x24(r30) diff --git a/include/f/f_pc/f_pc_leaf.h b/include/f/f_pc/f_pc_leaf.h index a903f647362..dc70b589307 100644 --- a/include/f/f_pc/f_pc_leaf.h +++ b/include/f/f_pc/f_pc_leaf.h @@ -28,6 +28,8 @@ typedef struct leaf_process_profile_definition { s32 unk24; } leaf_process_profile_definition; +int i = sizeof(process_profile_definition); + s32 fpcLf_GetPriority(const leafdraw_class* pLeaf); s32 fpcLf_DrawMethod(leafdraw_method_class* pMthd, void* pUserData); s32 fpcLf_Draw(leafdraw_class* pMthd); diff --git a/ldscript.lcf b/ldscript.lcf index bece6570704..70a66d129ef 100644 --- a/ldscript.lcf +++ b/ldscript.lcf @@ -3293,6 +3293,11 @@ fopDwTg_ToDrawQ__FP16create_tag_classi fopDwTg_DrawQTo__FP16create_tag_class fopDwTg_Init__FP16create_tag_classPv fopDwTg_CreateQueue__Fv +fopKy_Draw__FPv +fopKy_Execute__FPv +fopKy_IsDelete__FPv +fopKy_Delete__FPv +fopKy_Create__FPv } /* .init 80003100 - 80005600 diff --git a/src/f/f_op/f_op_draw_tag.cpp b/src/f/f_op/f_op_draw_tag.cpp index d8cfab512e6..3c0a4246674 100644 --- a/src/f/f_op/f_op_draw_tag.cpp +++ b/src/f/f_op/f_op_draw_tag.cpp @@ -3,15 +3,6 @@ #include "f/f_op/f_op_draw_tag.h" #include "global.h" -// additional symbols needed for f_op_draw_tag.cpp -// autogenerated by split.py v0.4 at 2021-02-15 20:18:52.463040 -extern "C" { -void fopDwTg_CreateQueue__Fv(void); -void fopDwTg_DrawQTo(void); -void fopDwTg_Init__FP16create_tag_classPv(void); -void fopDwTg_ToDrawQ__FP16create_tag_classi(void); -} - // additional symbols needed for f_op_draw_tag.cpp // autogenerated by split.py v0.4 at 2021-02-15 20:18:52.463045 extern node_list_class lists; diff --git a/src/f/f_op/f_op_kankyo.cpp b/src/f/f_op/f_op_kankyo.cpp index 9ecfddc94bd..c42feef9438 100644 --- a/src/f/f_op/f_op_kankyo.cpp +++ b/src/f/f_op/f_op_kankyo.cpp @@ -3,6 +3,7 @@ #include "d/d_com/d_com_inf_game/d_com_inf_game.h" #include "f/f_op/f_op_draw_tag.h" #include "f/f_pc/f_pc_base.h" +#include "f/f_pc/f_pc_leaf.h" #include "global.h" // additional symbols needed for f_op_kankyo.cpp @@ -28,42 +29,46 @@ void fopKy_Create__FPv(void); // additional symbols needed for f_op_kankyo.cpp // autogenerated by split.py v0.4 at 2021-02-15 21:03:24.816069 -extern u8 lbl_80450CE8; +extern u8 fopKy_KANKYO_TYPE; extern u8 lbl_80451124; -extern "C" { -// fopKy_Draw__FPv -// fopKy_Draw__FPv(void*) -asm void fopKy_Draw__FPv(void) { +// Doesn't appear to be a part of anything currently define in f_pc_leaf.h +struct unk { + u8 field_0x00[0xd8]; + leafdraw_method_class* mpDrawMtd; +}; + +// matches except wrong registers +#ifdef NON_MATCHING +void fopKy_Draw(void* i_pUserData) { + unk* pMtd = (unk*)i_pUserData; + if (!g_dComIfG_gameInfo.getPlay().getField0x4f7d()) { + fpcLf_DrawMethod(pMtd->mpDrawMtd,i_pUserData); + } +} +#else +asm void fopKy_Draw(void*) { nofralloc #include "f/f_op/f_op_kankyo/asm/func_8001F284.s" } +#endif -// fopKy_Execute__FPv -// fopKy_Execute(void*) -asm void fopKy_Execute__FPv(void) { +asm void fopKy_Execute(void*) { nofralloc #include "f/f_op/f_op_kankyo/asm/func_8001F2C0.s" } -// fopKy_IsDelete__FPv -// fopKy_IsDelete(void*) -asm void fopKy_IsDelete__FPv(void) { +asm void fopKy_IsDelete(void*) { nofralloc #include "f/f_op/f_op_kankyo/asm/func_8001F314.s" } -// fopKy_Delete__FPv -// fopKy_Delete(void*) -asm void fopKy_Delete__FPv(void) { +asm void fopKy_Delete(void*) { nofralloc #include "f/f_op/f_op_kankyo/asm/func_8001F368.s" } -// fopKy_Create__FPv -// fopKy_Create(void*) -asm void fopKy_Create__FPv(void) { +asm void fopKy_Create(void*) { nofralloc #include "f/f_op/f_op_kankyo/asm/func_8001F3B4.s" -} -}; +} \ No newline at end of file