ported over f_pc

This commit is contained in:
lepelog
2021-04-01 12:06:29 +02:00
parent 87bc0e711b
commit 53c6aa6c8b
62 changed files with 2202 additions and 3049 deletions
+24 -75
View File
@@ -6,95 +6,44 @@
#include "f_pc/f_pc_create_iter.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct node_list_class {};
struct node_class {};
struct method_filter {};
struct judge_filter {};
struct fpcCtIt_jilprm_c {};
struct create_tag_class {};
struct create_tag {};
//
// Forward References:
//
void fpcCtIt_Method(int (*)(void*, void*), void*);
void fpcCtIt_Judge(void* (*)(void*, void*), void*);
static void fpcCtIt_filter_JudgeInLayer(create_tag*, fpcCtIt_jilprm_c*);
void fpcCtIt_JudgeInLayer(unsigned int, void* (*)(void*, void*), void*);
extern "C" void fpcCtIt_Method__FPFPvPv_iPv();
extern "C" void fpcCtIt_Judge__FPFPvPv_PvPv();
extern "C" static void fpcCtIt_filter_JudgeInLayer__FP10create_tagP16fpcCtIt_jilprm_c();
extern "C" void fpcCtIt_JudgeInLayer__FUiPFPvPv_PvPv();
//
// External References:
//
void cLsIt_Method(node_list_class*, int (*)(node_class*, void*), void*);
void cLsIt_Judge(node_list_class*, void* (*)(node_class*, void*), void*);
void cTgIt_MethodCall(create_tag_class*, method_filter*);
void cTgIt_JudgeFilter(create_tag_class*, judge_filter*);
extern "C" void cLsIt_Method__FP15node_list_classPFP10node_classPv_iPv();
extern "C" void cLsIt_Judge__FP15node_list_classPFP10node_classPv_PvPv();
extern "C" void cTgIt_MethodCall__FP16create_tag_classP13method_filter();
extern "C" void cTgIt_JudgeFilter__FP16create_tag_classP12judge_filter();
extern "C" extern u8 g_fpcCtTg_Queue[12 + 4 /* padding */];
#include "f_pc/f_pc_create_req.h"
//
// Declarations:
//
/* 800209C8-80020A04 003C+00 s=0 e=1 z=0 None .text fpcCtIt_Method__FPFPvPv_iPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void fpcCtIt_Method(int (*)(void*, void*), void* param_1) {
nofralloc
#include "asm/f_pc/f_pc_create_iter/fpcCtIt_Method__FPFPvPv_iPv.s"
s32 fpcCtIt_Method(fpcCtIt_MethodFunc pJudge, void* pUserData) {
node_method_data iter;
iter.mFunc = pJudge;
iter.mpUserData = pUserData;
return cLsIt_Method(&g_fpcCtTg_Queue, (cNdIt_MethodFunc)cTgIt_MethodCall, &iter);
}
#pragma pop
/* 80020A04-80020A40 003C+00 s=1 e=2 z=0 None .text fpcCtIt_Judge__FPFPvPv_PvPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void fpcCtIt_Judge(void* (*)(void*, void*), void* param_1) {
nofralloc
#include "asm/f_pc/f_pc_create_iter/fpcCtIt_Judge__FPFPvPv_PvPv.s"
void* fpcCtIt_Judge(fpcCtIt_JudgeFunc pJudge, void* pUserData) {
node_judge_data iter;
iter.mFunc = pJudge;
iter.mpUserData = pUserData;
return cLsIt_Judge(&g_fpcCtTg_Queue, (cNdIt_JudgeFunc)cTgIt_JudgeFilter, &iter);
}
#pragma pop
/* 80020A40-80020A94 0054+00 s=1 e=0 z=0 None .text
* fpcCtIt_filter_JudgeInLayer__FP10create_tagP16fpcCtIt_jilprm_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm static void fpcCtIt_filter_JudgeInLayer(create_tag* param_0, fpcCtIt_jilprm_c* param_1) {
nofralloc
#include "asm/f_pc/f_pc_create_iter/fpcCtIt_filter_JudgeInLayer__FP10create_tagP16fpcCtIt_jilprm_c.s"
void* fpcCtIt_filter_JudgeInLayer(create_tag* pCreateTag, fpcCtIt_jilprm_c* pIterData) {
create_request* create_req = static_cast<create_request*>(pCreateTag->mBase.mpTagData);
if (create_req->mpLayer->mLayerID == pIterData->mLayerID) {
return pIterData->mFunc((node_class*)create_req->mpRes, pIterData->mpUserData);
} else {
return NULL;
}
}
#pragma pop
/* 80020A94-80020ACC 0038+00 s=0 e=1 z=0 None .text fpcCtIt_JudgeInLayer__FUiPFPvPv_PvPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void fpcCtIt_JudgeInLayer(unsigned int param_0, void* (*)(void*, void*), void* param_2) {
nofralloc
#include "asm/f_pc/f_pc_create_iter/fpcCtIt_JudgeInLayer__FUiPFPvPv_PvPv.s"
void* fpcCtIt_JudgeInLayer(unsigned int pLayerID, fpcCtIt_JudgeFunc pFunc, void* pUserData) {
fpcCtIt_jilprm_c data;
data.mLayerID = pLayerID;
data.mFunc = pFunc;
data.mpUserData = pUserData;
return fpcCtIt_Judge((fpcCtIt_JudgeFunc)fpcCtIt_filter_JudgeInLayer, &data);
}
#pragma pop