A few f_pc files (#26)

* f_pc_base, one non matching

* some of f_pc_manager

* f_pc_node OK

* f_pc_pause partly

* started node_req

* more progress

* most of node req

* delete unused asm

* node req header and param names

* param renaming

* header for manager

* review comment struct names

* fpcM_Management OK

* int -> s32

* merge master

* most of f_pc_create_iter

* f_pc_stdcreate_req OK

* f_pc_fstcreate OK

* f_pc_leaf OK

* f_pc_draw OK

* f_pc_deletor partly

* fix parameter type in f_pc_pause

* review

* review, use cPh enum and fix process_profile_definition struct

* convert f_pc files to C

* matched more functions

* fix global.h

* fix variable types

* format

* mpre Phs enum

* fix merge errors

* fix gamepad stopPatternedRumble

* format

* delete leftover files from merge

* move asm to correct folder

* revert f_pc from C to CPP

* remove C hacks and format

* format

* OK
This commit is contained in:
lepelog
2020-12-31 21:12:29 +01:00
committed by GitHub
parent 992cf48c7f
commit 0555115de8
94 changed files with 1840 additions and 2646 deletions
@@ -23,6 +23,7 @@ public:
void assign();
void checkResetCallback(OSTime unk); // todo: weird arg
void update();
void stopPatternedRumble() { this->rumble.stopPatternedRumble(this->pad_port); }
static void checkResetSwitch();
static void clearForReset();
static JUTGamePad* getGamePad(s32 pad_index);
+2 -2
View File
@@ -4,11 +4,11 @@
#include "SComponent/c_node.h"
struct node_list_class {
typedef struct node_list_class {
node_class* mpHead;
node_class* mpTail;
int mSize;
};
} node_list_class;
extern "C" {
+1
View File
@@ -4,6 +4,7 @@
#include "SComponent/c_list.h"
#include "SComponent/c_node_iter.h"
#include "global.h"
extern "C" {
+6 -4
View File
@@ -2,11 +2,13 @@
#ifndef SCOMPONENT_C_NODE_H
#define SCOMPONENT_C_NODE_H
struct node_class {
node_class* mpPrevNode;
#include "global.h"
typedef struct node_class {
struct node_class* mpPrevNode;
void* mpData;
node_class* mpNextNode;
};
struct node_class* mpNextNode;
} node_class;
extern "C" {
+2 -2
View File
@@ -12,10 +12,10 @@ enum cPhs__Step {
cPhs_NEXT_e = 0x06,
};
struct request_of_phase_process_class {
typedef struct request_of_phase_process_class {
cPhs__Handler* mpHandlerTable;
int mPhaseStep;
};
} request_of_phase_process_class;
extern "C" {
+2 -2
View File
@@ -7,11 +7,11 @@
#include "SComponent/c_tree.h"
#include "global.h"
struct create_tag_class {
typedef struct create_tag_class {
node_class mpNode;
void* mpTagData;
s8 mbIsUse;
};
} create_tag_class;
extern "C" {
+5 -4
View File
@@ -4,16 +4,17 @@
#include "SComponent/c_node_iter.h"
#include "SComponent/c_tag.h"
#include "global.h"
struct method_filter {
typedef struct method_filter {
cNdIt_MethodFunc mpMethodFunc;
void* mpUserData;
};
} method_filter;
struct judge_filter {
typedef struct judge_filter {
cNdIt_JudgeFunc mpJudgeFunc;
void* mpUserData;
};
} judge_filter;
extern "C" {
+2 -3
View File
@@ -4,12 +4,11 @@
#include "SComponent/c_list.h"
#include "SComponent/c_node.h"
#include "global.h"
struct node_lists_tree_class {
typedef struct node_lists_tree_class {
node_list_class* mpLists;
int mNumLists;
};
} node_lists_tree_class;
extern "C" {
+1
View File
@@ -4,6 +4,7 @@
#include "SComponent/c_node_iter.h"
#include "SComponent/c_tree.h"
#include "global.h"
extern "C" {
+8
View File
@@ -0,0 +1,8 @@
#ifndef __C_XYZ_H_
#define __C_XYZ_H_
#include "global.h"
class cXyz : public Vec {};
#endif
+10 -4
View File
@@ -11,6 +11,10 @@ public:
private:
};
class dDlst_peekZ_c {
u8 unk[4];
}; // actual size unknown!!!
class dDlst_list_c {
public:
static u32 mWipeColor;
@@ -18,8 +22,10 @@ public:
static u32 mWipeRate;
static u32 mWipeSpeed;
private:
u8 unk[0x161A0];
};
// private:
/* 0x00000 */ u8 unk[0x16180];
/* 0x16180 */ dDlst_peekZ_c dlstPeekZ;
/* 0x16184 */ u8 unk_0x16194[0x1C];
}; // Size: 0x161A0
#endif D_DRAWLIST_H_
#endif D_DRAWLIST_H_
+3 -8
View File
@@ -1,4 +1,5 @@
#include "JSystem/JKernel/JKRAramArchive/JKRAramArchive.h"
#include "SComponent/c_xyz.h"
#include "global.h"
struct STControl_vtable {
@@ -67,12 +68,6 @@ u32 dLib_getEventSwitchNo(int param_1);
struct fopAc_ac_c;
struct cXyz {
f32 x;
f32 y;
f32 z;
};
bool dLib_checkActorInRectangle(fopAc_ac_c* param_1, fopAc_ac_c* param_2, cXyz const* param_3,
cXyz const* param_4);
@@ -81,6 +76,6 @@ u32 dLib_getExpandSizeFromAramArchive(JKRAramArchive* param_1, char const* param
class dLib_time_c {
public:
s64 getTime(void);
void stopTime(void);
void startTime(void);
static void stopTime(void);
static void startTime(void);
};
+1 -6
View File
@@ -1,6 +1,7 @@
#ifndef __D_SAVE_H_
#define __D_SAVE_H_
#include "SComponent/c_xyz.h"
#include "dolphin/types.h"
#include "global.h"
@@ -375,12 +376,6 @@ private:
u8 padding[3];
};
// move to SComponent later
class cXyz {
public:
float x, y, z;
};
class dSv_horse_place_c {
public:
void init(void);
+23
View File
@@ -0,0 +1,23 @@
/* 80020A40 0001D980 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80020A44 0001D984 7C 08 02 A6 */ mflr r0
/* 80020A48 0001D988 90 01 00 14 */ stw r0, 0x14(r1)
/* 80020A4C 0001D98C 7C 85 23 78 */ mr r5, r4
/* 80020A50 0001D990 80 83 00 0C */ lwz r4, 0xc(r3)
/* 80020A54 0001D994 80 64 00 44 */ lwz r3, 0x44(r4)
/* 80020A58 0001D998 80 63 00 0C */ lwz r3, 0xc(r3)
/* 80020A5C 0001D99C 80 05 00 00 */ lwz r0, 0(r5)
/* 80020A60 0001D9A0 7C 03 00 40 */ cmplw r3, r0
/* 80020A64 0001D9A4 40 82 00 1C */ bne lbl_80020A80
/* 80020A68 0001D9A8 80 64 00 40 */ lwz r3, 0x40(r4)
/* 80020A6C 0001D9AC 80 85 00 08 */ lwz r4, 8(r5)
/* 80020A70 0001D9B0 81 85 00 04 */ lwz r12, 4(r5)
/* 80020A74 0001D9B4 7D 89 03 A6 */ mtctr r12
/* 80020A78 0001D9B8 4E 80 04 21 */ bctrl
/* 80020A7C 0001D9BC 48 00 00 08 */ b lbl_80020A84
lbl_80020A80:
/* 80020A80 0001D9C0 38 60 00 00 */ li r3, 0
lbl_80020A84:
/* 80020A84 0001D9C4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 80020A88 0001D9C8 7C 08 03 A6 */ mtlr r0
/* 80020A8C 0001D9CC 38 21 00 10 */ addi r1, r1, 0x10
/* 80020A90 0001D9D0 4E 80 00 20 */ blr
+9
View File
@@ -0,0 +1,9 @@
/* 80023844 00020784 54 84 06 3E */ clrlwi r4, r4, 0x18
/* 80023848 00020788 88 03 00 0B */ lbz r0, 0xb(r3)
/* 8002384C 0002078C 7C 80 00 38 */ and r0, r4, r0
/* 80023850 00020790 7C 64 00 50 */ subf r3, r4, r0
/* 80023854 00020794 30 03 FF FF */ addic r0, r3, -1
/* 80023858 00020798 7C 00 19 10 */ subfe r0, r0, r3
/* 8002385C 0002079C 7C 00 00 34 */ cntlzw r0, r0
/* 80023860 000207A0 54 03 D9 7E */ srwi r3, r0, 5
/* 80023864 000207A4 4E 80 00 20 */ blr
+18 -9
View File
@@ -3,40 +3,49 @@
#define F_PC_BASE_H
#include "SComponent/c_tag.h"
#include "global.h"
// #include "f/f_pc/f_pc_method.h"
#include "f/f_pc/f_pc_delete_tag.h"
#include "f/f_pc/f_pc_layer_tag.h"
#include "f/f_pc/f_pc_line_tag.h"
#include "f/f_pc/f_pc_priority.h"
#include "global.h"
#include "f/f_pc/f_pc_profile.h"
struct create_request;
struct profile_method_class;
struct base_process_class {
typedef struct base_process_class {
u32 mBsType;
u32 mBsPcId;
s16 mProcName;
u8 mUnk0;
s8 mUnk0;
u8 mPauseFlag;
s8 mInitState;
u8 mUnk2;
s16 mBsTypeId;
void* mpProf;
create_request* mpCtRq;
process_profile_definition* mpProf;
struct create_request* mpCtRq;
layer_management_tag_class mLyTg;
line_tag mLnTg;
delete_tag_class mDtTg;
process_priority_class mPi;
profile_method_class* mpPcMtd;
process_method_class* mpPcMtd;
void* mpUserData;
u32 mParameters;
u32 mSubType;
};
} base_process_class;
extern "C" {
int fpcBs_Is_JustOfType(int a, int b);
int fpcBs_Execute(base_process_class* pProc);
BOOL fpcBs_Is_JustOfType(s32 pType1, s32 pType2);
s32 fpcBs_MakeOfType(s32* pType);
s32 fpcBs_MakeOfId(void);
s32 fpcBs_Execute(base_process_class* pProc);
void fpcBs_DeleteAppend(base_process_class* pProc);
s32 fpcBs_IsDelete(base_process_class* pProc);
s32 fpcBs_Delete(base_process_class* pProc);
base_process_class* fpcBs_Create(s16 pProcTypeID, u32 pProcID, void* pData);
s32 fpcBs_SubCreate(base_process_class* pProc);
};
#endif
+23 -2
View File
@@ -2,12 +2,33 @@
#ifndef F_PC_CREATE_ITER_H
#define F_PC_CREATE_ITER_H
#include "SComponent/c_node_iter.h"
#include "SComponent/c_list_iter.h"
#include "SComponent/c_tag_iter.h"
#include "f/f_pc/f_pc_create_tag.h"
#include "global.h"
typedef struct node_method_data {
cNdIt_MethodFunc mFunc;
void* mpUserData;
} node_method_data;
typedef struct node_judge_data {
cNdIt_JudgeFunc mFunc;
void* mpUserData;
} node_judge_data;
typedef struct fpcCtIt_jilprm_c {
u32 mUnk0;
cNdIt_JudgeFunc mFunc;
void* mpUserData;
} fpcCtIt_jilprm_c;
extern "C" {
int fpcCtIt_Method(cNdIt_MethodFunc pJudge, void* pUserData);
s32 fpcCtIt_Method(cNdIt_MethodFunc pJudge, void* pUserData);
void* fpcCtIt_Judge(cNdIt_JudgeFunc pJudge, void* pUserData);
void* fpcCtIt_filter_JudgeInLayer(create_tag*, fpcCtIt_jilprm_c*);
void* fpcCtIt_JudgeInLayer(u32 pUnk0, cNdIt_JudgeFunc pFunc, void* pUserData);
};
#endif
+14 -13
View File
@@ -5,41 +5,42 @@
#include "SComponent/c_phase.h"
#include "SComponent/c_tag.h"
#include "f/f_pc/f_pc_create_tag.h"
#include "f/f_pc/f_pc_layer.h"
#include "f/f_pc/f_pc_method.h"
#include "f/f_pc/f_pc_method_tag.h"
#include "global.h"
struct base_process_class;
struct layer_class;
struct create_request_method_class {
typedef struct create_request_method_class {
cPhs__Handler mpHandler;
process_method_func mpCancel;
process_method_func mpDelete;
};
} create_request_method_class;
struct create_request : public create_tag {
typedef struct create_request {
create_tag mBase;
s8 mbIsCreating;
s8 mbIsCancelling;
process_method_tag_class mMtdTg;
create_request_method_class* mpCtRqMtd;
void* mpUnk1;
int mBsPcId;
base_process_class* mpRes;
s32 mBsPcId;
struct base_process_class* mpRes;
layer_class* mpLayer;
};
} create_request; // Size: 0x48
extern "C" {
bool fpcCtRq_isCreatingByID(create_tag* pTag, int* pId);
bool fpcCtRq_IsCreatingByID(unsigned int id);
BOOL fpcCtRq_isCreatingByID(create_tag* pTag, s32* pId);
BOOL fpcCtRq_IsCreatingByID(u32 id);
void fpcCtRq_CreateQTo(create_request* pReq);
void fpcCtRq_ToCreateQ(create_request* pReq);
bool fpcCtRq_Delete(create_request* pReq);
bool fpcCtRq_Cancel(create_request* pReq);
int fpcCtRq_IsDoing(create_request* pReq);
BOOL fpcCtRq_Delete(create_request* pReq);
BOOL fpcCtRq_Cancel(create_request* pReq);
s32 fpcCtRq_IsDoing(create_request* pReq);
void fpcCtRq_Handler(void);
create_request* fpcCtRq_Create(layer_class* pLayer, unsigned long size,
create_request* fpcCtRq_Create(layer_class* pLayer, u32 size,
create_request_method_class* pCtRqMtd);
};
+4 -2
View File
@@ -5,13 +5,15 @@
#include "SComponent/c_tag.h"
#include "global.h"
struct create_tag : public create_tag_class {};
typedef struct create_tag {
create_tag_class mBase;
} create_tag;
extern "C" {
void fpcCtTg_ToCreateQ(create_tag_class* pTag);
void fpcCtTg_CreateQTo(create_tag_class* pTag);
int fpcCtTg_Init(create_tag* pTag, void* pUserData);
s32 fpcCtTg_Init(create_tag* pTag, void* pUserData);
};
#endif
+3 -3
View File
@@ -8,9 +8,9 @@ struct base_process_class;
extern "C" {
bool fpcCt_IsCreatingByID(unsigned int id);
int fpcCt_IsDoing(base_process_class* pProc);
void fpcCt_Abort(base_process_class* pProc);
BOOL fpcCt_IsCreatingByID(u32 id);
s32 fpcCt_IsDoing(struct base_process_class* pProc);
BOOL fpcCt_Abort(struct base_process_class* pProc);
void fpcCt_Handler(void);
};
+8 -8
View File
@@ -3,24 +3,24 @@
#define F_PC_DELETE_TAG_H
#include "SComponent/c_tag.h"
#include "f/f_pc/f_pc_layer.h"
#include "global.h"
struct layer_class;
typedef s32 (*delete_tag_func)(void*);
typedef int (*delete_tag_func)(void*);
struct delete_tag_class : public create_tag_class {
typedef struct delete_tag_class {
create_tag_class mBase;
layer_class* mpLayer;
s16 mTimer;
};
} delete_tag_class;
extern "C" {
bool fpcDtTg_IsEmpty(delete_tag_class* pTag);
BOOL fpcDtTg_IsEmpty(void);
void fpcDtTg_ToDeleteQ(delete_tag_class* pTag);
void fpcDtTg_DeleteQTo(delete_tag_class* pTag);
int fpcDtTg_Do(delete_tag_class* pTag, delete_tag_func pFunc);
int fpcDtTg_Init(delete_tag_class* pTag, void* pUserData);
s32 fpcDtTg_Do(delete_tag_class* pTag, delete_tag_func pFunc);
s32 fpcDtTg_Init(delete_tag_class* pTag, void* pUserData);
};
#endif
+5 -5
View File
@@ -2,17 +2,17 @@
#ifndef F_PC_DELETOR_H
#define F_PC_DELETOR_H
#include "global.h"
#include "f/f_pc/f_pc_base.h"
struct base_process_class;
extern "C" {
bool fpcDt_IsComplete(void);
int fpcDt_ToDeleteQ(base_process_class* pProc);
int fpcDt_ToQueue(base_process_class* pProc);
BOOL fpcDt_IsComplete(void);
s32 fpcDt_ToDeleteQ(base_process_class* pProc);
s32 fpcDt_ToQueue(base_process_class* pProc);
void fpcDt_Handler(void);
int fpcDt_Delete(base_process_class* pProc);
s32 fpcDt_Delete(base_process_class* pProc);
};
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef F_PC_DRAW_H
#define F_PC_DRAW_H
#include "SComponent/c_node_iter.h"
#include "f/f_pc/f_pc_base.h"
#include "global.h"
typedef s32 (*cNdIt_MethodFuncFunc)(cNdIt_MethodFunc);
extern "C" {
s32 fpcDw_Execute(base_process_class* pProc);
s32 fpcDw_Handler(cNdIt_MethodFuncFunc param_1, cNdIt_MethodFunc param_2);
};
#endif
+8 -6
View File
@@ -2,15 +2,17 @@
#ifndef F_PC_DRAW_PRIORITY_H
#define F_PC_DRAW_PRIORITY_H
struct draw_priority_class {
short mPriority;
};
#include "global.h"
typedef struct draw_priority_class {
s16 mPriority;
} draw_priority_class;
extern "C" {
int fpcDwPi_Get(draw_priority_class* pDwPi);
void fpcDwPi_Set(draw_priority_class* pDwPi, int p);
void fpcDwPi_Init(draw_priority_class* pDwPi, int p);
s32 fpcDwPi_Get(draw_priority_class* pDwPi);
void fpcDwPi_Set(draw_priority_class* pDwPi, s32 p);
void fpcDwPi_Init(draw_priority_class* pDwPi, s32 p);
};
#endif
+8 -5
View File
@@ -3,14 +3,17 @@
#define F_PC_EXECUTOR_H
#include "SComponent/c_node_iter.h"
struct base_process_class;
#include "f/f_pc/f_pc_base.h"
extern "C" {
int fpcEx_ToLineQ(base_process_class* pProc);
int fpcEx_ExecuteQTo(base_process_class* pProc);
int fpcEx_ToExecuteQ(base_process_class* pProc);
base_process_class* fpcEx_Search(void* pFunc, void* pUserData);
base_process_class* fpcEx_SearchByID(u32 id);
BOOL fpcEx_IsExist(s32 id);
s32 fpcEx_ToLineQ(base_process_class* pProc);
s32 fpcEx_ExecuteQTo(base_process_class* pProc);
s32 fpcEx_Execute(base_process_class* pProc);
s32 fpcEx_ToExecuteQ(base_process_class* pProc);
void fpcEx_Handler(cNdIt_MethodFunc pFunc);
};
+26
View File
@@ -0,0 +1,26 @@
#ifndef F_PC_FSTCREATE_REQ_H
#define F_PC_FSTCREATE_REQ_H
#include "f/f_pc/f_pc_base.h"
#include "f/f_pc/f_pc_create_req.h"
#include "f/f_pc/f_pc_layer.h"
#include "global.h"
typedef s32 (*fstCreateFunc)(void*, void*);
typedef struct fast_create_request {
/* 0x00 */ create_request mBase;
/* 0x48 */ fstCreateFunc mpFastCreateFunc;
/* 0x4C */ void* mpFastCreateData;
} fast_create_request; // Size: 0x50
extern "C" {
s32 fpcFCtRq_Do(fast_create_request* pFstCreateReq);
s32 fpcFCtRq_Delete(fast_create_request*);
base_process_class* fpcFCtRq_Request(layer_class* pLayer, s16 pProcTypeID,
fstCreateFunc pFastCreateFunc, void* pFastCreateData,
void* pData);
};
#endif
+22 -21
View File
@@ -8,49 +8,50 @@
#include "global.h"
struct process_method_tag_class;
struct process_node_class;
typedef struct process_node_class process_node_class;
struct layer_class {
node_class mNode; // generates different asm for struct copy if using inheritance
typedef struct layer_class {
node_class mNode;
u32 mLayerID;
node_lists_tree_class mNodeListTree;
process_node_class* mpPcNode;
node_list_class mCancelList;
s32 mCreatingCount : 16; // for some reason, the compiler only optimized these into a single
// word load/store instead of 2 halfword load/store, but only if they
// are written like this
s32 mDeletingCount : 16;
};
struct {
s16 mCreatingCount;
s16 mDeletingCount;
} counts;
} layer_class;
extern "C" {
void fpcLy_SetCurrentLayer(layer_class* pLayer);
layer_class* fpcLy_CurrentLayer(void);
layer_class* fpcLy_RootLayer(void);
layer_class* fpcLy_Layer(unsigned int id);
layer_class* fpcLy_Search(unsigned int id);
layer_class* fpcLy_Layer(u32 id);
layer_class* fpcLy_Search(u32 id);
void fpcLy_Regist(layer_class* pLayer);
void fpcLy_CreatedMesg(layer_class* pLayer);
void fpcLy_CreatingMesg(layer_class* pLayer);
void fpcLy_DeletedMesg(layer_class* pLayer);
void fpcLy_DeletingMesg(layer_class* pLayer);
bool fpcLy_IsCreatingMesg(layer_class* pLayer);
bool fpcLy_IsDeletingMesg(layer_class* pLayer);
BOOL fpcLy_IsCreatingMesg(layer_class* pLayer);
BOOL fpcLy_IsDeletingMesg(layer_class* pLayer);
int fpcLy_IntoQueue(layer_class* pLayer, int treeListIdx, create_tag_class* pTag, int idx);
int fpcLy_ToQueue(layer_class* pLayer, int treeListIdx, create_tag_class* pTag);
int fpcLy_QueueTo(layer_class* pLayer, create_tag_class* pTag);
s32 fpcLy_IntoQueue(layer_class* pLayer, s32 treeListIdx, create_tag_class* pTag, s32 idx);
s32 fpcLy_ToQueue(layer_class* pLayer, s32 treeListIdx, create_tag_class* pTag);
s32 fpcLy_QueueTo(layer_class* pLayer, create_tag_class* pTag);
void fpcLy_Cancel(layer_class* pLayer);
bool fpcLy_CancelMethod(process_method_tag_class* pLayer);
BOOL fpcLy_CancelMethod(struct process_method_tag_class* pLayer);
void fpcLy_CancelQTo(process_method_tag_class* pMthd);
int fpcLy_ToCancelQ(layer_class* pLayer, process_method_tag_class* pMthd);
void fpcLy_CancelQTo(struct process_method_tag_class* pMthd);
s32 fpcLy_ToCancelQ(layer_class* pLayer, struct process_method_tag_class* pMthd);
void fpcLy_Create(layer_class* pLayer, process_node_class* pPcNode, node_list_class* pLists,
int listNum);
int fpcLy_Delete(layer_class* pLayer);
void fpcLy_Create(layer_class* pLayer, struct process_node_class* pPcNode, node_list_class* pLists,
s32 listNum);
s32 fpcLy_Delete(layer_class* pLayer);
};
#endif
+6 -6
View File
@@ -5,17 +5,17 @@
#include "f/f_pc/f_pc_layer.h"
#include "global.h"
struct layer_iter {
typedef struct layer_iter {
void* mpFunc;
void* mpUserData;
};
} layer_iter;
extern "C" {
int fpcLyIt_OnlyHere(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData);
int fpcLyIt_OnlyHereLY(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData);
s32 fpcLyIt_OnlyHere(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData);
s32 fpcLyIt_OnlyHereLY(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData);
void* fpcLyIt_Judge(layer_class* pLayer, cNdIt_MethodFunc pFunc, void* pUserData);
void* fpcLyIt_AllJudge(cNdIt_MethodFunc pFunc, void* pUserData);
}
};
#endif
#endif
+4 -5
View File
@@ -3,16 +3,15 @@
#define F_PC_LAYER_TAG_H
#include "SComponent/c_tag.h"
#include "f/f_pc/f_pc_layer.h"
#include "global.h"
struct layer_class;
struct layer_management_tag_class {
typedef struct layer_management_tag_class {
create_tag_class mCreateTag;
layer_class* mpLayer;
u16 mNodeListID;
u16 mNodeListIdx;
};
} layer_management_tag_class;
extern "C" {
@@ -20,6 +19,6 @@ s32 fpcLyTg_QueueTo(layer_management_tag_class* pTag);
s32 fpcLyTg_ToQueue(layer_management_tag_class* pTag, u32 layerID, u16 listID, u16 listPrio);
s32 fpcLyTg_Move(layer_management_tag_class*, u32, u16, u16);
s32 fpcLyTg_Init(layer_management_tag_class*, u32, void*);
}
};
#endif
+23 -8
View File
@@ -5,23 +5,38 @@
#include "f/f_pc/f_pc_base.h"
#include "f/f_pc/f_pc_draw_priority.h"
#include "f/f_pc/f_pc_method.h"
#include "global.h"
struct leafdraw_method_class : public process_method_class {
typedef struct leafdraw_method_class {
process_method_class mBase;
process_method_func mpDrawFunc;
};
} leafdraw_method_class;
struct leafdraw_class : public base_process_class {
typedef struct leafdraw_class {
base_process_class mBase;
leafdraw_method_class* mpDrawMtd;
u8 mbUnk0;
s8 mbUnk0;
u8 mbUnk1;
draw_priority_class mDwPi;
};
} leafdraw_class;
typedef struct leaf_process_profile_definition {
process_profile_definition mBase;
leafdraw_method_class* mLfDrwMth;
s16 unk20;
u8 unk22[2];
s32 unk24;
} leaf_process_profile_definition;
extern "C" {
int fpcLf_GetPriority(leafdraw_class* pLeaf);
int fpcLf_DrawMethod(leafdraw_method_class* pMthd, void* pUserData);
int fpcLf_Draw(leafdraw_class* pMthd);
s32 fpcLf_GetPriority(leafdraw_class* pLeaf);
s32 fpcLf_DrawMethod(leafdraw_method_class* pMthd, void* pUserData);
s32 fpcLf_Draw(leafdraw_class* pMthd);
s32 fpcLf_Execute(leafdraw_class* pLeaf);
s32 fpcLf_IsDelete(leafdraw_class* pLeaf);
s32 fpcLf_Delete(leafdraw_class* pLeaf);
s32 fpcLf_Create(leafdraw_class* pLeaf);
};
#endif
+9
View File
@@ -0,0 +1,9 @@
#ifndef F_PC_LINE_H
#define F_PC_LINE_H
extern "C" {
void fpcLn_Create(void);
};
#endif
+7 -5
View File
@@ -3,16 +3,18 @@
#define F_PC_LINE_TAG_H
#include "SComponent/c_tag.h"
#include "global.h"
struct line_tag : public create_tag_class {
int mLineListID;
};
typedef struct line_tag {
create_tag_class mBase;
s32 mLineListID;
} line_tag;
extern "C" {
int fpcLnTg_Move(line_tag* pLineTag, int newLineListID);
s32 fpcLnTg_Move(line_tag* pLineTag, s32 newLineListID);
void fpcLnTg_QueueTo(line_tag* pLineTag);
int fpcLnTg_ToQueue(line_tag* pLineTag, int lineListID);
s32 fpcLnTg_ToQueue(line_tag* pLineTag, s32 lineListID);
void fpcLnTg_Init(line_tag* pLineTag, void* pData);
};
+3 -3
View File
@@ -6,10 +6,10 @@
extern "C" {
bool fpcLd_Use(u16 procName);
int fpcLd_IsLoaded(u16 procName);
BOOL fpcLd_Use(u16 procName);
s32 fpcLd_IsLoaded(u16 procName);
void fpcLd_Free(u16 procName);
int fpcLd_Load(u16 procName);
s32 fpcLd_Load(u16 procName);
};
#endif
+30
View File
@@ -0,0 +1,30 @@
#ifndef F_PC_MANAGER_H
#define F_PC_MANAGER_H
#include "SComponent/c_node_iter.h"
#include "SComponent/c_tag.h"
#include "d/d_com/d_com_inf_game/d_com_inf_game.h"
#include "f/f_pc/f_pc_base.h"
#include "f/f_pc/f_pc_node_req.h"
#include "global.h"
extern "C" {
typedef s32 (*FastCreateReqFunc)(void*);
void fpcM_Draw(void* pProc);
s32 fpcM_DrawIterater(cNdIt_MethodFunc pFunc);
void fpcM_Execute(void* pProc);
void fpcM_Delete(void* pProc);
BOOL fpcM_IsCreating(u32 pID);
// void fpcM_Management(unk_func pFunc1, unk_func pFunc2);
void fpcM_Init(void);
base_process_class* fpcM_FastCreate(s16 pProcTypeID, FastCreateReqFunc param_2, void* param_3,
void* pData);
s32 fpcM_IsPause(void* pProc, u8 param_2);
void fpcM_PauseEnable(void* pProc, u8 param_2);
void fpcM_PauseDisable(void* pProc, u8 param_2);
void* fpcM_JudgeInLayer(u32 pLayerID, cNdIt_MethodFunc pFunc, void* pUserData);
};
#endif
+10 -8
View File
@@ -2,22 +2,24 @@
#ifndef F_PC_METHOD_H
#define F_PC_METHOD_H
typedef int (*process_method_func)(void*);
#include "global.h"
struct process_method_class {
typedef s32 (*process_method_func)(void*);
typedef struct process_method_class {
process_method_func mpCreateFunc;
process_method_func mpDeleteFunc;
process_method_func mpExecuteFunc;
process_method_func mpIsDeleteFunc;
};
} process_method_class;
extern "C" {
int fpcMtd_Method(process_method_func pFunc, void* pUserData);
int fpcMtd_Execute(process_method_class* pMthd, void* pUserData);
int fpcMtd_IsDelete(process_method_class* pMthd, void* pUserData);
int fpcMtd_Delete(process_method_class* pMthd, void* pUserData);
int fpcMtd_Create(process_method_class* pMthd, void* pUserData);
s32 fpcMtd_Method(process_method_func pFunc, void* pUserData);
s32 fpcMtd_Execute(process_method_class* pMthd, void* pUserData);
s32 fpcMtd_IsDelete(process_method_class* pMthd, void* pUserData);
s32 fpcMtd_Delete(process_method_class* pMthd, void* pUserData);
s32 fpcMtd_Create(process_method_class* pMthd, void* pUserData);
};
#endif
+1
View File
@@ -3,6 +3,7 @@
#define F_PC_METHOD_ITER_H
#include "SComponent/c_list_iter.h"
#include "global.h"
extern "C" {
+8 -6
View File
@@ -3,20 +3,22 @@
#define F_PC_METHOD_TAG_H
#include "SComponent/c_tag.h"
#include "global.h"
typedef int (*process_method_tag_func)(void*);
typedef s32 (*process_method_tag_func)(void*);
struct process_method_tag_class : public create_tag_class {
typedef struct process_method_tag_class {
create_tag_class mCreateTag;
process_method_tag_func mpFunc;
void* mpMthdData;
};
} process_method_tag_class;
extern "C" {
int fpcMtdTg_Do(process_method_tag_class* pMthd);
int fpcMtdTg_ToMethodQ(node_list_class* pList, process_method_tag_class* pMthd);
s32 fpcMtdTg_Do(process_method_tag_class* pMthd);
s32 fpcMtdTg_ToMethodQ(node_list_class* pList, process_method_tag_class* pMthd);
void fpcMtdTg_MethodQTo(process_method_tag_class* pMthd);
int fpcMtdTg_Init(process_method_tag_class* pMthd, process_method_tag_func pFunc, void* pMthdData);
s32 fpcMtdTg_Init(process_method_tag_class* pMthd, process_method_tag_func pFunc, void* pMthdData);
};
#endif
+26 -6
View File
@@ -6,17 +6,37 @@
#include "f/f_pc/f_pc_layer.h"
#include "f/f_pc/f_pc_method.h"
struct process_node_class : public base_process_class {
process_method_class* mpNodeMtd;
typedef struct nodedraw_method_class {
process_method_class mBase;
process_method_func mNodedrawFunc;
} nodedraw_method_class;
typedef struct process_node_class {
base_process_class mBase;
nodedraw_method_class* mpNodeMtd;
layer_class mLayer;
node_list_class mLayerNodeLists[16];
u8 mUnk0;
};
s8 mUnk0;
} process_node_class;
typedef struct node_process_profile_definition {
process_profile_definition mBase;
nodedraw_method_class* mNDrwMthCls;
s16 unk20;
u8 unk22[2];
s32 unk24;
} node_process_profile_definition;
extern "C" {
int fpcNd_Create(process_node_class* pNode);
bool fpcNd_IsDeleteTiming(void);
s32 fpcNd_DrawMethod(nodedraw_method_class* pNodeMethod, void* pData);
s32 fpcNd_Draw(process_node_class* pProcNode);
s32 fpcNd_Execute(process_node_class* pProcNode);
void* fpcNd_IsCreatingFromUnder(process_node_class* pProcNode);
s32 fpcNd_IsDeleteTiming(process_node_class* pProcNode);
s32 fpcNd_IsDelete(process_node_class* pProcNode);
s32 fpcNd_Delete(process_node_class* pProcNode);
s32 fpcNd_Create(process_node_class* pProcNode);
};
#endif
+72
View File
@@ -0,0 +1,72 @@
#ifndef F_PC_NODE_REQ_H
#define F_PC_NODE_REQ_H
#include "SComponent/c_phase.h"
#include "f/f_pc/f_pc_method.h"
#include "f/f_pc/f_pc_method_tag.h"
#include "f/f_pc/f_pc_node.h"
#include "global.h"
typedef struct node_create_request_method_class {
process_method_func mpExecuteFunc;
process_method_func mpCancelFunc;
process_method_func mpUnkFunc;
process_method_func mpPostMethodFunc;
} node_create_request_method_class;
// needed to match struct copy
typedef struct unk_process_node_class {
process_node_class* mpNodeProc;
u32 mProcId;
} unk_process_node_class;
typedef struct node_create_request {
create_tag_class mCreateTag;
process_method_tag_class mProcMthCls;
request_of_phase_process_class mReqPhsProc;
cPhs__Handler* mpPhsHandler;
node_create_request_method_class* mpNodeCrReqMthCls;
s32 mParameter;
s32 mRequestId;
unk_process_node_class mNodeProc;
layer_class* mpLayerClass;
u32 mCreatingID;
s16 mProcName;
void* mpUserData;
s16 unk_0x60;
} node_create_request; // Size: 0x64
typedef struct request_node_class {
node_class mBase;
node_create_request* mNodeCrReq;
} request_node_class;
extern "C" {
void fpcNdRq_RequestQTo(node_create_request* pNodeCreateReq);
void fpcNdRq_ToRequestQ(node_create_request* pNodeCreateReq);
s32 fpcNdRq_phase_IsCreated(node_create_request* pNodeCreateReq);
s32 fpcNdRq_phase_Create(node_create_request* pNodeCreateReq);
s32 fpcNdRq_phase_IsDeleteTiming(node_create_request* pNodeCreateReq);
s32 fpcNdRq_phase_IsDeleted(node_create_request* pNodeCreateReq);
s32 fpcNdRq_phase_Delete(node_create_request* pNodeCreateReq);
s32 fpcNdRq_DoPhase(node_create_request* pNodeCreateReq);
s32 fpcNdRq_Execute(node_create_request* pNodeCreateReq);
s32 fpcNdRq_Delete(node_create_request* pNodeCreateReq);
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_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);
node_create_request* fpcNdRq_CreateNode(u32 pRequestSize, s16 param_2, void* param_3);
node_create_request*
fpcNdRq_Request(u32 param_1, s32 param_2, struct process_node_class* param_3, s16 param_4,
void* param_5, node_create_request_method_class* pNodeCreateRequestMethodClass);
s32 fpcNdRq_ReChangeNode(u32 pRequestId, s16 param_2, void* param_3);
s32 fpcNdRq_ReRequest(u32 pRequestId, s16 param_2, void* param_3);
};
#endif
+8 -7
View File
@@ -1,15 +1,16 @@
#ifndef F_PC_PAUSE
#define F_PC_PAUSE
#ifndef F_PC_PAUSE_H
#define F_PC_PAUSE_H
#include "f/f_pc/f_pc_base.h"
#include "f/f_pc/f_pc_node.h"
#include "global.h"
extern "C" {
bool fpcPause_IsEnable(void* pProcess, u8 flag);
int fpcPause_Enable(void* pProcess, u8 flag);
int fpcPause_Disable(void* pProcess, u32 flag);
void fpcPause_Init(void* pProcess);
s32 fpcPause_IsEnable(void* pProc, u8 expected);
s32 fpcPause_Enable(void* pProc, u8 pauseMask);
s32 fpcPause_Disable(void* pProc, u8 pauseMask);
void fpcPause_Init(void* pProc);
};
#endif
@@ -1,9 +0,0 @@
/* 80023844 00020784 54 84 06 3E */ clrlwi r4, r4, 0x18
/* 80023848 00020788 88 03 00 0B */ lbz r0, 0xb(r3)
/* 8002384C 0002078C 7C 80 00 38 */ and r0,r4,r0
/* 80023850 00020790 7C 64 00 50 */ subf r3,r4,r0
/* 80023854 00020794 30 03 FF FF */ addic r0,r3,-1
/* 80023858 00020798 7C 00 19 10 */ subfe r0,r0,r3
/* 8002385C 0002079C 7C 00 00 34 */ cntlzw r0,r0
/* 80023860 000207A0 54 03 D9 7E */ srwi r3,r0,5
/* 80023864 000207A4 4E 80 00 20 */ blr
+13 -15
View File
@@ -4,33 +4,31 @@
#include "SComponent/c_tag.h"
#include "f/f_pc/f_pc_method_tag.h"
#include "global.h"
struct process_priority_queue_info {
typedef struct process_priority_queue_info {
u32 mLayer;
u16 mListID;
u16 mListPrio;
};
} process_priority_queue_info;
struct process_priority_class : public create_tag_class {
typedef struct process_priority_class {
create_tag_class mBase;
process_method_tag_class mMtdTag;
process_priority_queue_info mInfoQ;
process_priority_queue_info mInfoCurr;
};
} process_priority_class;
extern "C" {
int fpcPi_IsInQueue(process_priority_class* pPi);
int fpcPi_QueueTo(process_priority_class* pPi);
int fpcPi_ToQueue(process_priority_class* pPi);
s32 fpcPi_IsInQueue(process_priority_class* pPi);
s32 fpcPi_QueueTo(process_priority_class* pPi);
s32 fpcPi_ToQueue(process_priority_class* pPi);
process_priority_class* fpcPi_GetFromQueue(void);
int fpcPi_Delete(process_priority_class* pPi);
int fpcPi_IsNormal(unsigned int layer, unsigned short listID, unsigned short priority);
int fpcPi_Change(process_priority_class* pPi, unsigned int layer, unsigned short listID,
unsigned short priority);
int fpcPi_Handler(void);
int fpcPi_Init(process_priority_class* pPi, void* pUserData, unsigned int layer,
unsigned short listID, unsigned short priority);
s32 fpcPi_Delete(process_priority_class* pPi);
s32 fpcPi_IsNormal(u32 layer, u16 listID, u16 priority);
s32 fpcPi_Change(process_priority_class* pPi, u32 layer, u16 listID, u16 priority);
s32 fpcPi_Handler(void);
s32 fpcPi_Init(process_priority_class* pPi, void* pUserData, u32 layer, u16 listID, u16 priority);
};
#endif
+16 -1
View File
@@ -2,11 +2,26 @@
#ifndef F_PC_PROFILE_H
#define F_PC_PROFILE_H
#include "f/f_pc/f_pc_method.h"
#include "global.h"
struct nodedraw_method_class;
typedef struct process_profile_definition {
s32 mLayerID;
u16 mListID;
u16 mListPrio;
s16 mProcName;
s16 unkA; // probably padding
struct process_method_class* mpPcMtd;
s32 mSize;
s32 mSizeOther;
s32 mParameters;
} process_profile_definition;
extern "C" {
void* fpcPf_Get(s16 profileID);
process_profile_definition* fpcPf_Get(s16 profileID);
};
#endif
+1 -2
View File
@@ -2,10 +2,9 @@
#ifndef F_PC_SEARCHER_H
#define F_PC_SEARCHER_H
#include "f/f_pc/f_pc_base.h"
#include "global.h"
struct base_process_class;
extern "C" {
void* fpcSch_JudgeForPName(base_process_class* pProc, void* pUserData);
+33
View File
@@ -0,0 +1,33 @@
#ifndef F_PC_STDCREATE_H
#define F_PC_STDCREATE_H
#include "f/f_pc/f_pc_create_req.h"
#include "f/f_pc/f_pc_layer.h"
#include "global.h"
typedef s32 (*stdCreateFunc)(void*, void*);
typedef struct standard_create_request_class {
/* 0x00 */ create_request mBase;
/* 0x48 */ request_of_phase_process_class unk_0x48;
/* 0x50 */ s16 mLoadID;
/* 0x54 */ void* unk_0x54;
/* 0x58 */ stdCreateFunc unk_0x58;
/* 0x5C */ void* unk_0x5C;
} standard_create_request_class;
extern "C" {
s32 fpcSCtRq_phase_CreateProcess(standard_create_request_class* pStdCreateReq);
s32 fpcSCtRq_phase_SubCreateProcess(standard_create_request_class* pStdCreateReq);
s32 fpcSCtRq_phase_IsComplete(standard_create_request_class* pStdCreateReq);
s32 fpcSCtRq_phase_PostMethod(standard_create_request_class* pStdCreateReq);
s32 fpcSCtRq_phase_Done(standard_create_request_class*);
s32 fpcSCtRq_Handler(standard_create_request_class* pStdCreateReq);
s32 fpcSCtRq_Delete(standard_create_request_class*);
s32 fpcSCtRq_Cancel(standard_create_request_class*);
s32 fpcSCtRq_Request(layer_class* param_1, s16 param_2, stdCreateFunc param_3, void* param_4,
void* param_5);
};
#endif
+32 -7
View File
@@ -277,12 +277,42 @@ void ARQInit(void);
void DCStoreRangeNoSync(void);
void __RAS_OSDisableInterrupts_begin(void);
u8 dComIfGs_getBottleMax(void);
class CRumble;
void JUTGamePad_NS_CRumble_NS_stopPatternedRumble(CRumble*, s16);
void dLib_time_c_NS_stopTime(void);
void dLib_time_c_NS_startTime(void);
class dComIfG_play_c;
void dComIfG_play_c_NS_drawSimpleModel(dComIfG_play_c*);
void cAPIGph_Painter(void);
bool dDvdErrorMsg_c_NS_execute(void);
bool dShutdownErrorMsg_c_NS_execute(void);
class dDlst_peekZ_c;
void dDlst_peekZ_c_NS_peekData(dDlst_peekZ_c*);
void MtxInit(void);
void mDoDvdErr_ThdCleanup(void);
void initiate__6JUTXfbFUsUsP7JKRHeapl(void);
void common_init__6JUTXfbFl(void);
}
// DVD
class DVDFileInfo;
extern "C" {
s32 DVDOpen(const char*, u8[48]);
s32 DVDClose(u8[48]);
void DVDReadPrio(void);
void DVDGetCurrentDiskID(void);
s32 DVDFastOpen(long, u8[48]);
int DVDGetCommandBlockStatus(u8[48]);
s32 DVDReadAsyncPrio(u8[48], void*, long, long, void (*)(long, DVDFileInfo*), long);
void DVDConvertPathToEntrynum(void);
void DVDChangeDir(void);
void DVDCloseDir(void);
void DVDOpenDir(void);
void DVDReadDir(void);
}
class mDoCPd_c;
extern "C" {
void cAPICPad_recalibrate(void);
@@ -398,12 +428,6 @@ void VISetBlack(s32);
void VIFlush(void);
}
extern "C" {
void VIWaitForRetrace(void);
void VISetBlack(s32);
void VIFlush(void);
}
extern "C" {
void JUTReport__FiiPCce(int, int, const char*, ...);
void JUTReportConsole(const char*);
@@ -449,6 +473,8 @@ void Z2SeqMgr_NS_resetBattleBgmParams(void);
void JAISoundID_X1_(void);
void func_803621A8(void);
void moveVolume__18JAISoundParamsMoveFfUl(void);
class Z2SoundMgr;
void Z2SoundMgr_NS_pauseAllGameSound(Z2SoundMgr*, bool);
}
// Z2LinkMgr
extern "C" {
@@ -2018,7 +2044,6 @@ void daAlink_c_NS_checkBoomerangCatchAction(void);
void daAlink_c_NS_procGrassWhistleWaitInit(void);
void daAlink_c_NS_procWolfChainReadyInit(void);
void daAlink_c_NS_checkHorseGetOffAndSetDoStatus(void);
void fpcM_IsCreating(void);
void func_800D0B60(void);
void func_800F6EFC(void);
void func_801446D4(void);
+7 -1
View File
@@ -13,4 +13,10 @@ struct Vec {
#include "os/OS.h"
#include "variables.h"
#endif
// 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;
}
#endif
@@ -0,0 +1,7 @@
#ifndef __M_DO_CONTROLLER_PAD_H_
#define __M_DO_CONTROLLER_PAD_H_
#include "JSystem/JUtility/JUTGamePad/JUTGamePad.h"
extern JUTGamePad* lbl_803DD2D8[4]; // m_Do_controller_pad::mDoCPd_c::m_gamePad
#endif
-1
View File
@@ -49,7 +49,6 @@ extern u8 lbl_80450B24;
extern u8 lbl_80450B1C;
extern u8 lbl_80450580;
extern u8 lbl_80450B1A;
extern u8 lbl_803DD2D8;
extern u8 lbl_80450B18;
extern u8 lbl_803D32E0;
extern u8 lbl_80450BBC;