mirror of
https://github.com/zeldaret/tp
synced 2026-05-23 23:05:36 -04:00
ported over f_pc
This commit is contained in:
+89
-136
@@ -6,75 +6,9 @@
|
||||
#include "f_pc/f_pc_stdcreate_req.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct standard_create_request_class {};
|
||||
|
||||
struct request_of_phase_process_class {};
|
||||
|
||||
struct layer_class {};
|
||||
|
||||
struct create_request_method_class {};
|
||||
|
||||
struct base_process_class {};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
void fpcSCtRq_phase_Load(standard_create_request_class*);
|
||||
void fpcSCtRq_phase_CreateProcess(standard_create_request_class*);
|
||||
void fpcSCtRq_phase_SubCreateProcess(standard_create_request_class*);
|
||||
void fpcSCtRq_phase_IsComplete(standard_create_request_class*);
|
||||
void fpcSCtRq_phase_PostMethod(standard_create_request_class*);
|
||||
static s32 fpcSCtRq_phase_Done(standard_create_request_class*);
|
||||
void fpcSCtRq_Handler(standard_create_request_class*);
|
||||
static bool fpcSCtRq_Delete(standard_create_request_class*);
|
||||
bool fpcSCtRq_Cancel(standard_create_request_class*);
|
||||
void fpcSCtRq_Request(layer_class*, s16, int (*)(void*, void*), void*, void*);
|
||||
|
||||
extern "C" void fpcSCtRq_phase_Load__FP29standard_create_request_class();
|
||||
extern "C" void fpcSCtRq_phase_CreateProcess__FP29standard_create_request_class();
|
||||
extern "C" void fpcSCtRq_phase_SubCreateProcess__FP29standard_create_request_class();
|
||||
extern "C" void fpcSCtRq_phase_IsComplete__FP29standard_create_request_class();
|
||||
extern "C" void fpcSCtRq_phase_PostMethod__FP29standard_create_request_class();
|
||||
extern "C" static s32 fpcSCtRq_phase_Done__FP29standard_create_request_class();
|
||||
extern "C" void fpcSCtRq_Handler__FP29standard_create_request_class();
|
||||
extern "C" static bool fpcSCtRq_Delete__FP29standard_create_request_class();
|
||||
extern "C" bool fpcSCtRq_Cancel__FP29standard_create_request_class();
|
||||
extern "C" void fpcSCtRq_Request__FP11layer_classsPFPvPv_iPvPv();
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
void fpcBs_Is_JustOfType(int, int);
|
||||
void fpcBs_Create(s16, unsigned int, void*);
|
||||
void fpcBs_SubCreate(base_process_class*);
|
||||
void fpcCtRq_Create(layer_class*, u32, create_request_method_class*);
|
||||
void fpcLy_IsCreatingMesg(layer_class*);
|
||||
void fpcLy_SetCurrentLayer(layer_class*);
|
||||
void fpcLd_Free(s16);
|
||||
void fpcLd_Load(s16);
|
||||
void cPhs_Set(request_of_phase_process_class*, int (**)(void*));
|
||||
void cPhs_Do(request_of_phase_process_class*, void*);
|
||||
|
||||
extern "C" void fpcBs_Is_JustOfType__Fii();
|
||||
extern "C" void fpcBs_Create__FsUiPv();
|
||||
extern "C" void fpcBs_SubCreate__FP18base_process_class();
|
||||
extern "C" void fpcCtRq_Create__FP11layer_classUlP27create_request_method_class();
|
||||
extern "C" void fpcLy_IsCreatingMesg__FP11layer_class();
|
||||
extern "C" void fpcLy_SetCurrentLayer__FP11layer_class();
|
||||
extern "C" void fpcLd_Free__Fs();
|
||||
extern "C" void fpcLd_Load__Fs();
|
||||
extern "C" void cPhs_Set__FP30request_of_phase_process_classPPFPv_i();
|
||||
extern "C" void cPhs_Do__FP30request_of_phase_process_classPv();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _restgpr_27();
|
||||
extern "C" extern u8 g_fpcNd_type[4 + 4 /* padding */];
|
||||
#include "f_pc/f_pc_load.h"
|
||||
#include "f_pc/f_pc_base.h"
|
||||
#include "f_pc/f_pc_node.h"
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
@@ -82,115 +16,134 @@ extern "C" extern u8 g_fpcNd_type[4 + 4 /* padding */];
|
||||
|
||||
/* 80023B70-80023BC4 0054+00 s=1 e=0 z=5 None .text
|
||||
* fpcSCtRq_phase_Load__FP29standard_create_request_class */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void fpcSCtRq_phase_Load(standard_create_request_class* param_0) {
|
||||
nofralloc
|
||||
#include "asm/f_pc/f_pc_stdcreate_req/fpcSCtRq_phase_Load__FP29standard_create_request_class.s"
|
||||
s32 fpcSCtRq_phase_Load(standard_create_request_class* pStdCreateReq) {
|
||||
switch (fpcLd_Load(pStdCreateReq->mLoadID)) {
|
||||
case 0:
|
||||
return cPhs_ZERO_e;
|
||||
case 4:
|
||||
return 2;
|
||||
case 5:
|
||||
default:
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80023BC4-80023C2C 0068+00 s=1 e=0 z=9 None .text
|
||||
* fpcSCtRq_phase_CreateProcess__FP29standard_create_request_class */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void fpcSCtRq_phase_CreateProcess(standard_create_request_class* param_0) {
|
||||
nofralloc
|
||||
#include "asm/f_pc/f_pc_stdcreate_req/fpcSCtRq_phase_CreateProcess__FP29standard_create_request_class.s"
|
||||
s32 fpcSCtRq_phase_CreateProcess(standard_create_request_class* pStdCreateReq) {
|
||||
fpcLy_SetCurrentLayer(pStdCreateReq->mBase.mpLayer);
|
||||
pStdCreateReq->mBase.mpRes =
|
||||
fpcBs_Create(pStdCreateReq->mLoadID, pStdCreateReq->mBase.mBsPcId, pStdCreateReq->unk_0x54);
|
||||
if (pStdCreateReq->mBase.mpRes == NULL) {
|
||||
fpcLd_Free(pStdCreateReq->mLoadID);
|
||||
return cPhs_ERROR_e;
|
||||
} else {
|
||||
pStdCreateReq->mBase.mpRes->mpCtRq = (struct create_request*)pStdCreateReq;
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80023C2C-80023C64 0038+00 s=1 e=0 z=3 None .text
|
||||
* fpcSCtRq_phase_SubCreateProcess__FP29standard_create_request_class */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void fpcSCtRq_phase_SubCreateProcess(standard_create_request_class* param_0) {
|
||||
nofralloc
|
||||
#include "asm/f_pc/f_pc_stdcreate_req/fpcSCtRq_phase_SubCreateProcess__FP29standard_create_request_class.s"
|
||||
s32 fpcSCtRq_phase_SubCreateProcess(standard_create_request_class* pStdCreateReq) {
|
||||
fpcLy_SetCurrentLayer(pStdCreateReq->mBase.mpLayer);
|
||||
return fpcBs_SubCreate(pStdCreateReq->mBase.mpRes);
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80023C64-80023CBC 0058+00 s=1 e=0 z=14 None .text
|
||||
* fpcSCtRq_phase_IsComplete__FP29standard_create_request_class */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void fpcSCtRq_phase_IsComplete(standard_create_request_class* param_0) {
|
||||
nofralloc
|
||||
#include "asm/f_pc/f_pc_stdcreate_req/fpcSCtRq_phase_IsComplete__FP29standard_create_request_class.s"
|
||||
s32 fpcSCtRq_phase_IsComplete(standard_create_request_class* pStdCreateReq) {
|
||||
process_node_class* procNode = (process_node_class*)pStdCreateReq->mBase.mpRes;
|
||||
if (fpcBs_Is_JustOfType(g_fpcNd_type, procNode->mBase.mSubType) == 1) {
|
||||
if (fpcLy_IsCreatingMesg(&procNode->mLayer) == 1) {
|
||||
return cPhs_ZERO_e;
|
||||
}
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80023CBC-80023D0C 0050+00 s=1 e=0 z=5 None .text
|
||||
* fpcSCtRq_phase_PostMethod__FP29standard_create_request_class */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void fpcSCtRq_phase_PostMethod(standard_create_request_class* param_0) {
|
||||
nofralloc
|
||||
#include "asm/f_pc/f_pc_stdcreate_req/fpcSCtRq_phase_PostMethod__FP29standard_create_request_class.s"
|
||||
s32 fpcSCtRq_phase_PostMethod(standard_create_request_class* pStdCreateReq) {
|
||||
if (pStdCreateReq->unk_0x58 != NULL &&
|
||||
pStdCreateReq->unk_0x58(pStdCreateReq->mBase.mpRes, pStdCreateReq->unk_0x5C) == 0) {
|
||||
return cPhs_ZERO_e;
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80023D0C-80023D14 0008+00 s=1 e=0 z=0 None .text
|
||||
* fpcSCtRq_phase_Done__FP29standard_create_request_class */
|
||||
static s32 fpcSCtRq_phase_Done(standard_create_request_class* param_0) {
|
||||
s32 fpcSCtRq_phase_Done(standard_create_request_class* param_0) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
/* 80023D14-80023D84 0070+00 s=1 e=0 z=2 None .text
|
||||
* fpcSCtRq_Handler__FP29standard_create_request_class */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void fpcSCtRq_Handler(standard_create_request_class* param_0) {
|
||||
nofralloc
|
||||
#include "asm/f_pc/f_pc_stdcreate_req/fpcSCtRq_Handler__FP29standard_create_request_class.s"
|
||||
s32 fpcSCtRq_Handler(standard_create_request_class* pStdCreateReq) {
|
||||
s32 result = cPhs_Do(&pStdCreateReq->unk_0x48, pStdCreateReq);
|
||||
switch (result) {
|
||||
case 2:
|
||||
return fpcSCtRq_Handler(pStdCreateReq);
|
||||
case 4:
|
||||
return 4;
|
||||
case 1:
|
||||
case 5:
|
||||
default:
|
||||
return result;
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80023D84-80023D8C 0008+00 s=1 e=0 z=0 None .text
|
||||
* fpcSCtRq_Delete__FP29standard_create_request_class */
|
||||
static bool fpcSCtRq_Delete(standard_create_request_class* param_0) {
|
||||
return true;
|
||||
s32 fpcSCtRq_Delete(standard_create_request_class* param_0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80023D8C-80023D94 0008+00 s=1 e=0 z=1 None .text
|
||||
* fpcSCtRq_Cancel__FP29standard_create_request_class */
|
||||
bool fpcSCtRq_Cancel(standard_create_request_class* param_0) {
|
||||
return true;
|
||||
s32 fpcSCtRq_Cancel(standard_create_request_class* param_0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803A3AF0-803A3AFC 000C+00 s=1 e=0 z=0 None .data submethod$2261 */
|
||||
SECTION_DATA static void* submethod[3] = {
|
||||
(void*)fpcSCtRq_Handler__FP29standard_create_request_class,
|
||||
(void*)fpcSCtRq_Cancel__FP29standard_create_request_class,
|
||||
(void*)fpcSCtRq_Delete__FP29standard_create_request_class,
|
||||
static create_request_method_class submethod = {
|
||||
(cPhs__Handler)fpcSCtRq_Handler,
|
||||
(process_method_func)fpcSCtRq_Cancel,
|
||||
(process_method_func)fpcSCtRq_Delete,
|
||||
};
|
||||
|
||||
/* 803A3AFC-803A3B18 001C+00 s=1 e=0 z=0 None .data method$2262 */
|
||||
SECTION_DATA static void* method[7] = {
|
||||
(void*)fpcSCtRq_phase_Load__FP29standard_create_request_class,
|
||||
(void*)fpcSCtRq_phase_CreateProcess__FP29standard_create_request_class,
|
||||
(void*)fpcSCtRq_phase_SubCreateProcess__FP29standard_create_request_class,
|
||||
(void*)fpcSCtRq_phase_IsComplete__FP29standard_create_request_class,
|
||||
(void*)fpcSCtRq_phase_PostMethod__FP29standard_create_request_class,
|
||||
(void*)fpcSCtRq_phase_Done__FP29standard_create_request_class,
|
||||
(void*)NULL,
|
||||
static cPhs__Handler method[7] = {
|
||||
(cPhs__Handler)fpcSCtRq_phase_Load,
|
||||
(cPhs__Handler)fpcSCtRq_phase_CreateProcess,
|
||||
(cPhs__Handler)fpcSCtRq_phase_SubCreateProcess,
|
||||
(cPhs__Handler)fpcSCtRq_phase_IsComplete,
|
||||
(cPhs__Handler)fpcSCtRq_phase_PostMethod,
|
||||
(cPhs__Handler)fpcSCtRq_phase_Done,
|
||||
NULL,
|
||||
};
|
||||
|
||||
/* 80023D94-80023E28 0094+00 s=0 e=12 z=1 None .text
|
||||
* fpcSCtRq_Request__FP11layer_classsPFPvPv_iPvPv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void fpcSCtRq_Request(layer_class* param_0, s16 param_1, int (*)(void*, void*), void* param_3,
|
||||
void* param_4) {
|
||||
nofralloc
|
||||
#include "asm/f_pc/f_pc_stdcreate_req/fpcSCtRq_Request__FP11layer_classsPFPvPv_iPvPv.s"
|
||||
s32 fpcSCtRq_Request(layer_class* param_1, s16 pProcName, stdCreateFunc param_3, void* param_4,
|
||||
void* param_5) {
|
||||
if (pProcName >= 0x7FFF) {
|
||||
return -1;
|
||||
} else {
|
||||
standard_create_request_class* request =
|
||||
(standard_create_request_class*)fpcCtRq_Create(param_1, 0x60, &submethod);
|
||||
if (request == NULL) {
|
||||
return -1;
|
||||
} else {
|
||||
cPhs_Set(&request->unk_0x48, method);
|
||||
request->mLoadID = pProcName;
|
||||
request->unk_0x58 = param_3;
|
||||
request->unk_0x5C = param_4;
|
||||
request->unk_0x54 = param_5;
|
||||
return request->mBase.mBsPcId;
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
Reference in New Issue
Block a user