f_pc mostly matching

This commit is contained in:
Jasper St. Pierre
2023-09-09 22:13:52 -07:00
parent 33c20f5323
commit 5ea54cb071
8 changed files with 72 additions and 38 deletions
+8 -2
View File
@@ -13,9 +13,15 @@
#include "f_pc/f_pc_profile.h"
#include "dolphin/types.h"
// hack to make functions that return comparisons as int match
extern int __cntlzw(unsigned int);
inline BOOL checkEqual(s32 a, s32 b) {
return (u32)__cntlzw(a - b) >> 5;
}
/* 8003C88C-8003C89C .text fpcBs_Is_JustOfType__Fii */
bool fpcBs_Is_JustOfType(int i_typeA, int i_typeB) {
return i_typeB == i_typeA;
BOOL fpcBs_Is_JustOfType(int i_typeA, int i_typeB) {
return checkEqual(i_typeA, i_typeB);
}
static int g_fpcBs_type;
+8 -2
View File
@@ -9,9 +9,15 @@
node_list_class g_fpcDtTg_Queue = {NULL, NULL, 0};
// hack to make functions that return comparisons as int match
extern int __cntlzw(unsigned int);
inline BOOL checkEqual(s32 a, s32 b) {
return (u32)__cntlzw(a - b) >> 5;
}
/* 8003D170-8003D188 .text fpcDtTg_IsEmpty__Fv */
bool fpcDtTg_IsEmpty() {
return g_fpcDtTg_Queue.mSize == 0;
BOOL fpcDtTg_IsEmpty() {
return checkEqual(g_fpcDtTg_Queue.mSize, 0);
}
/* 8003D188-8003D1BC .text fpcDtTg_ToDeleteQ__FP16delete_tag_class */
+1 -1
View File
@@ -12,7 +12,7 @@
#include "f_pc/f_pc_node.h"
/* 8003D280-8003D2A0 .text fpcDt_IsComplete__Fv */
bool fpcDt_IsComplete() {
BOOL fpcDt_IsComplete() {
return fpcDtTg_IsEmpty();
}
+34 -12
View File
@@ -4,7 +4,13 @@
//
#include "f_pc/f_pc_manager.h"
#include "dolphin/types.h"
#include "f_pc/f_pc_creator.h"
#include "f_pc/f_pc_draw.h"
#include "f_pc/f_pc_deletor.h"
#include "f_pc/f_pc_fstcreate_req.h"
#include "f_pc/f_pc_layer_iter.h"
#include "f_pc/f_pc_line.h"
#include "f_pc/f_pc_pause.h"
/* 8003E318-8003E338 .text fpcM_Draw__FPv */
void fpcM_Draw(void* i_proc) {
@@ -53,30 +59,46 @@ void fpcM_Management(void (*)(void), void (*)(void)) {
/* 8003ED90-8003EDCC .text fpcM_Init__Fv */
void fpcM_Init() {
/* Nonmatching */
static layer_class rootlayer;
static node_list_class queue[10];
fpcLy_Create(&rootlayer, NULL, queue, 10);
fpcLn_Create();
}
/* 8003EDCC-8003EE20 .text fpcM_FastCreate__FsPFPv_iPvPv */
void fpcM_FastCreate(short, int (*)(void*), void*, void*) {
/* Nonmatching */
base_process_class* fpcM_FastCreate(s16 i_procTypeID, FastCreateReqFunc i_createReqFunc,
void* i_createData, void* i_data) {
return fpcFCtRq_Request(fpcLy_CurrentLayer(), i_procTypeID, (fstCreateFunc)i_createReqFunc,
i_createData, i_data);
}
/* 8003EE20-8003EE44 .text fpcM_IsPause__FPvUc */
void fpcM_IsPause(void*, unsigned char) {
/* Nonmatching */
s32 fpcM_IsPause(void* i_proc, u8 i_flag) {
return fpcPause_IsEnable((base_process_class*)i_proc, i_flag & 0xFF);
}
/* 8003EE44-8003EE68 .text fpcM_PauseEnable__FPvUc */
void fpcM_PauseEnable(void*, unsigned char) {
/* Nonmatching */
void fpcM_PauseEnable(void* i_proc, u8 i_flag) {
fpcPause_Enable((process_node_class*)i_proc, i_flag & 0xFF);
}
/* 8003EE68-8003EE8C .text fpcM_PauseDisable__FPvUc */
void fpcM_PauseDisable(void*, unsigned char) {
/* Nonmatching */
void fpcM_PauseDisable(void* i_proc, u8 i_flag) {
fpcPause_Disable((process_node_class*)i_proc, i_flag & 0xFF);
}
/* 8003EE8C-8003EF00 .text fpcM_JudgeInLayer__FUiPFPvPv_PvPv */
void fpcM_JudgeInLayer(unsigned int, void* (*)(void*, void*), void*) {
/* Nonmatching */
void* fpcM_JudgeInLayer(unsigned int i_layerID, fpcCtIt_JudgeFunc i_judgeFunc, void* i_data) {
layer_class* layer = fpcLy_Layer(i_layerID);
if (layer != NULL) {
void* ret = fpcCtIt_JudgeInLayer(i_layerID, i_judgeFunc, i_data);
if (ret == NULL) {
ret = fpcLyIt_Judge(layer, i_judgeFunc, i_data);
}
return ret;
} else {
return NULL;
}
}