decompile s_basic, cleanup mangled names in f_pc (#101)

Co-authored-by: Pheenoh <pheenoh@gmail.com>
This commit is contained in:
lepelog 2021-01-26 23:11:50 +01:00 committed by GitHub
parent 3ee8a929a9
commit ce0d0c3521
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 46 additions and 63 deletions

View File

@ -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

View File

@ -5,6 +5,7 @@
#include "global.h"
class cMl {
public:
static void init(JKRHeap*);
static void* memalignB(int, unsigned long);
static void free(void*);

View File

@ -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

View File

@ -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);

View File

@ -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);
}

View File

@ -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 \

View File

@ -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 {

View File

@ -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);

View File

@ -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++;