diff --git a/asm/SStandard/s/s_basic.s b/asm/SStandard/s/s_basic.s deleted file mode 100644 index 395468a09f3..00000000000 --- a/asm/SStandard/s/s_basic.s +++ /dev/null @@ -1,29 +0,0 @@ -.include "macros.inc" - -.section .text, "ax" # 80271c8c - - -.global sBs_FillArea_s -sBs_FillArea_s: -/* 80271C8C 0026EBCC 54 80 F8 7E */ srwi r0, r4, 1 -/* 80271C90 0026EBD0 7C 09 03 A6 */ mtctr r0 -/* 80271C94 0026EBD4 28 00 00 00 */ cmplwi r0, 0 -/* 80271C98 0026EBD8 4C 81 00 20 */ blelr -lbl_80271C9C: -/* 80271C9C 0026EBDC B0 A3 00 00 */ sth r5, 0(r3) -/* 80271CA0 0026EBE0 38 63 00 02 */ addi r3, r3, 2 -/* 80271CA4 0026EBE4 42 00 FF F8 */ bdnz lbl_80271C9C -/* 80271CA8 0026EBE8 4E 80 00 20 */ blr - -.global sBs_ClearArea -sBs_ClearArea: -/* 80271CAC 0026EBEC 94 21 FF F0 */ stwu r1, -0x10(r1) -/* 80271CB0 0026EBF0 7C 08 02 A6 */ mflr r0 -/* 80271CB4 0026EBF4 90 01 00 14 */ stw r0, 0x14(r1) -/* 80271CB8 0026EBF8 38 A0 00 00 */ li r5, 0 -/* 80271CBC 0026EBFC 4B FF FF D1 */ bl sBs_FillArea_s -/* 80271CC0 0026EC00 80 01 00 14 */ lwz r0, 0x14(r1) -/* 80271CC4 0026EC04 7C 08 03 A6 */ mtlr r0 -/* 80271CC8 0026EC08 38 21 00 10 */ addi r1, r1, 0x10 -/* 80271CCC 0026EC0C 4E 80 00 20 */ blr - diff --git a/include/SComponent/c_malloc.h b/include/SComponent/c_malloc.h index 3107faae1f1..510c65e5d8c 100644 --- a/include/SComponent/c_malloc.h +++ b/include/SComponent/c_malloc.h @@ -5,6 +5,7 @@ #include "global.h" class cMl { +public: static void init(JKRHeap*); static void* memalignB(int, unsigned long); static void free(void*); diff --git a/include/SStandard/s_basic.h b/include/SStandard/s_basic.h new file mode 100644 index 00000000000..ac0bb138f5f --- /dev/null +++ b/include/SStandard/s_basic.h @@ -0,0 +1,9 @@ +#ifndef S_BASIC_H_ +#define S_BASIC_H_ + +#include "global.h" + +void sBs_FillArea_s(void* pPtr, u32 pNumBytes, s16 pValue); +void sBs_ClearArea(void* pPtr, u32 pNumBytes); + +#endif \ No newline at end of file diff --git a/include/f/f_pc/f_pc_node_req.h b/include/f/f_pc/f_pc_node_req.h index e40a628b038..f526995eb34 100644 --- a/include/f/f_pc/f_pc_node_req.h +++ b/include/f/f_pc/f_pc_node_req.h @@ -57,7 +57,7 @@ s32 fpcNdRq_Cancel(node_create_request* pNodeCreateReq); s32 fpcNdRq_Handler(void); s32 fpcNdRq_IsPossibleTarget(struct process_node_class* pProcNode); s32 fpcNdRq_IsIng(struct process_node_class* pProcNode); -node_create_request* fpcNdRq_Create(s32 pRequestSize); +node_create_request* fpcNdRq_Create(u32 pRequestSize); node_create_request* fpcNdRq_ChangeNode(u32 pRequestSize, struct process_node_class* pProcNode, s16 param_3, void* param_4); node_create_request* fpcNdRq_DeleteNode(u32 pRequestSize, struct process_node_class* pProcNode); diff --git a/libs/SSystem/SStandard/s_basic.cpp b/libs/SSystem/SStandard/s_basic.cpp index 4bf93c8658d..b1a72c168b9 100644 --- a/libs/SSystem/SStandard/s_basic.cpp +++ b/libs/SSystem/SStandard/s_basic.cpp @@ -1 +1,17 @@ -// ok +/* s_basic.cpp autogenerated by split.py v0.4 at 2021-01-26 08:03:35.809652 */ + +#include "SStandard/s_basic.h" + +// sBs_FillArea_s__FPvUls +void sBs_FillArea_s(void* pPtr, u32 pNumBytes, s16 pValue) { + s16* castPtr = (s16*)pPtr; + for (int i = 0; i < pNumBytes / 2; i++) { + *castPtr = pValue; + castPtr++; + } +} + +// sBs_ClearArea__FPvUl +void sBs_ClearArea(void* pPtr, u32 pNumBytes) { + sBs_FillArea_s(pPtr, pNumBytes, 0); +} diff --git a/obj_files.mk b/obj_files.mk index 8d84f8b3685..129835ee9b5 100644 --- a/obj_files.mk +++ b/obj_files.mk @@ -275,7 +275,7 @@ TEXT_O_FILES := \ $(BUILD_DIR)/libs/SSystem/SComponent/c_m3d_g_tri.o \ $(BUILD_DIR)/libs/SSystem/SComponent/c_lib.o \ $(BUILD_DIR)/libs/SSystem/SComponent/c_angle.o \ - $(BUILD_DIR)/asm/SStandard/s/s_basic.o \ + $(BUILD_DIR)/libs/SSystem/SStandard/s_basic.o \ $(BUILD_DIR)/asm/JFramework/JFWSystem.o \ $(BUILD_DIR)/asm/JFramework/JFWDisplay.o \ $(BUILD_DIR)/asm/J3DU/J3DUClipper.o \ diff --git a/src/f/f_pc/f_pc_base.cpp b/src/f/f_pc/f_pc_base.cpp index a8a74026e55..c3d62385a2b 100644 --- a/src/f/f_pc/f_pc_base.cpp +++ b/src/f/f_pc/f_pc_base.cpp @@ -1,5 +1,7 @@ #include "f/f_pc/f_pc_base.h" +#include "SComponent/c_malloc.h" #include "SComponent/c_phase.h" +#include "SStandard/s_basic.h" #include "dolphin/types.h" #include "f/f_pc/f_pc_delete_tag.h" #include "f/f_pc/f_pc_layer.h" @@ -18,8 +20,6 @@ extern s32 lbl_80450D00; // f_pc_base::g_fpcBs_type extern "C" { -extern void sBs_ClearArea(void* pPtr, s32 pSize); - BOOL fpcBs_Is_JustOfType(s32 pType1, s32 pType2) { return checkEqual(pType1, pType2); } @@ -54,7 +54,7 @@ s32 fpcBs_Execute(base_process_class* pProc) { void fpcBs_DeleteAppend(base_process_class* pProc) { if (pProc->mpUserData != NULL) { - free__3cMlFPv(pProc->mpUserData); + cMl::free(pProc->mpUserData); pProc->mpUserData = NULL; } } @@ -73,7 +73,7 @@ s32 fpcBs_Delete(base_process_class* pProc) { if (deleteResult == 1) { fpcBs_DeleteAppend(pProc); pProc->mBsType = 0; - free__3cMlFPv(pProc); + cMl::free(pProc); } return deleteResult; } @@ -81,11 +81,11 @@ s32 fpcBs_Delete(base_process_class* pProc) { base_process_class* fpcBs_Create(s16 pProcTypeID, u32 pProcID, void* pData) { process_profile_definition* procProfDef; base_process_class* procClass; - s32 size; + u32 size; procProfDef = fpcPf_Get(pProcTypeID); size = procProfDef->mSize + procProfDef->mSizeOther; - procClass = (base_process_class*)memalignB__3cMlFiUl(-4, size); + procClass = (base_process_class*)cMl::memalignB(-4, size); if (procClass == NULL) { return NULL; } else { diff --git a/src/f/f_pc/f_pc_create_req.cpp b/src/f/f_pc/f_pc_create_req.cpp index d828558d6e1..753d7459ed1 100644 --- a/src/f/f_pc/f_pc_create_req.cpp +++ b/src/f/f_pc/f_pc_create_req.cpp @@ -1,5 +1,6 @@ #include "dolphin/types.h" +#include "SComponent/c_malloc.h" #include "SComponent/c_phase.h" #include "f/f_pc/f_pc_base.h" #include "f/f_pc/f_pc_create_iter.h" @@ -32,8 +33,6 @@ void fpcCtRq_ToCreateQ(create_request* pReq) { fpcCtTg_ToCreateQ(&pReq->mBase.mBase); } -extern void free__3cMlFPv(void* pPtr); - BOOL fpcCtRq_Delete(create_request* pReq) { fpcCtRq_CreateQTo(pReq); if (pReq->mpCtRqMtd != NULL && fpcMtd_Method(pReq->mpCtRqMtd->mpDelete, pReq) == 0) { @@ -42,7 +41,7 @@ BOOL fpcCtRq_Delete(create_request* pReq) { if (pReq->mpRes) { pReq->mpRes->mpCtRq = NULL; } - free__3cMlFPv(pReq); + cMl::free(pReq); return 1; } } @@ -105,7 +104,7 @@ void fpcCtRq_Handler(void) { } create_request* fpcCtRq_Create(layer_class* pLayer, u32 size, create_request_method_class* pMthd) { - create_request* pReq = (create_request*)memalignB__3cMlFiUl(-4, size); + create_request* pReq = (create_request*)cMl::memalignB(-4, size); if (pReq != NULL) { fpcCtTg_Init(&pReq->mBase, pReq); diff --git a/src/f/f_pc/f_pc_node_req.cpp b/src/f/f_pc/f_pc_node_req.cpp index 1490a50cf9c..8d3b0808bdd 100644 --- a/src/f/f_pc/f_pc_node_req.cpp +++ b/src/f/f_pc/f_pc_node_req.cpp @@ -1,4 +1,6 @@ #include "f/f_pc/f_pc_node_req.h" +#include "SComponent/c_malloc.h" +#include "SStandard/s_basic.h" #include "dolphin/types.h" #include "f/f_pc/f_pc_base.h" #include "f/f_pc/f_pc_create_req.h" @@ -6,6 +8,7 @@ #include "f/f_pc/f_pc_deletor.h" #include "f/f_pc/f_pc_executor.h" #include "f/f_pc/f_pc_layer.h" +#include "f/f_pc/f_pc_stdcreate_req.h" // f_pc_node_req::l_fpcNdRq_Queue extern node_list_class lbl_803A3A38; @@ -23,9 +26,6 @@ extern s8 lbl_80450D4C; extern "C" { -extern s32 fpcSCtRq_Request(layer_class*, s16, process_method_func, void*, void*); -extern void sBs_ClearArea(void* pPtr, s32 pSize); - void fpcNdRq_RequestQTo(node_create_request* pNodeCreateReq) { fpcLy_CreatedMesg(pNodeCreateReq->mpLayerClass); fpcLy_CancelQTo(&pNodeCreateReq->mProcMthCls); @@ -49,8 +49,8 @@ s32 fpcNdRq_phase_IsCreated(node_create_request* pNodeCreateReq) { s32 fpcNdRq_phase_Create(node_create_request* pNodeCreateReq) { pNodeCreateReq->mCreatingID = fpcSCtRq_Request(pNodeCreateReq->mpLayerClass, pNodeCreateReq->mProcName, - pNodeCreateReq->mpNodeCrReqMthCls->mpPostMethodFunc, pNodeCreateReq, - pNodeCreateReq->mpUserData); + (stdCreateFunc)pNodeCreateReq->mpNodeCrReqMthCls->mpPostMethodFunc, + pNodeCreateReq, pNodeCreateReq->mpUserData); return pNodeCreateReq->mCreatingID == -1 ? 3 : 2; } @@ -104,7 +104,7 @@ s32 fpcNdRq_Delete(node_create_request* pNodeCreateReq) { fpcMtd_Method(pNodeCreateReq->mpNodeCrReqMthCls->mpUnkFunc, pNodeCreateReq) == 0) { return 0; } - free__3cMlFPv(pNodeCreateReq); + cMl::free(pNodeCreateReq); return 1; } @@ -175,8 +175,8 @@ s32 fpcNdRq_IsIng(process_node_class* pProcNode) { return 0; } -node_create_request* fpcNdRq_Create(s32 pRequestSize) { - node_create_request* req = (node_create_request*)memalignB__3cMlFiUl(-4, pRequestSize); +node_create_request* fpcNdRq_Create(u32 pRequestSize) { + node_create_request* req = (node_create_request*)cMl::memalignB(-4, pRequestSize); if (req != NULL) { if (lbl_80450D4C == 0) { lbl_80450D48 = 0; @@ -184,19 +184,6 @@ node_create_request* fpcNdRq_Create(s32 pRequestSize) { } sBs_ClearArea(req, pRequestSize); *req = lbl_803A3A44; - // req->mCreateTag = lbl_803A3A44.mCreateTag; - // req->mProcMthCls = lbl_803A3A44.mProcMthCls; - // req->mReqPhsProc = lbl_803A3A44.mReqPhsProc; - // req->mpPhsHandler = lbl_803A3A44.mpPhsHandler; - // req->mpNodeCrReqMthCls = lbl_803A3A44.mpNodeCrReqMthCls; - // req->mParameter = lbl_803A3A44.mParameter; - // req->mRequestId = lbl_803A3A44.mRequestId; - // req->mNodeProc = lbl_803A3A44.mNodeProc; - // req->mpLayerClass = lbl_803A3A44.mpLayerClass; - // req->mCreatingID = lbl_803A3A44.mCreatingID; - // req->mProcName = lbl_803A3A44.mProcName; - // req->mpUserData = lbl_803A3A44.mpUserData; - // req->unk_0x60 = lbl_803A3A44.unk_0x60; cTg_Create(&req->mCreateTag, req); fpcMtdTg_Init(&req->mProcMthCls, (process_method_tag_func)fpcNdRq_Cancel, req); req->mRequestId = lbl_80450D48++;