mirror of
https://github.com/encounter/tp.git
synced 2026-07-11 06:18:46 -07:00
started copying code over to new disasm
This commit is contained in:
@@ -75,7 +75,8 @@ INCLUDES := -i include -i include/dolphin/ -i src
|
||||
ASFLAGS := -mgekko -I include
|
||||
|
||||
# Linker flags
|
||||
LDFLAGS := -unused -map $(MAP) -fp hard -nodefaults -w on
|
||||
# LDFLAGS := -unused -map $(MAP) -fp hard -nodefaults -w on
|
||||
LDFLAGS := -map $(MAP) -fp hard -nodefaults -w on
|
||||
|
||||
# Compiler flags
|
||||
CFLAGS += -Cpp_exceptions off -proc gekko -fp hard -O3 -nodefaults -msgstyle gcc -str pool,readonly,reuse -RTTI off -maxerrors 5 -enum int $(INCLUDES)
|
||||
|
||||
@@ -10,7 +10,7 @@ lbl_8026758C:
|
||||
/* 802675AC 80 01 00 08 */ lwz r0, 8(r1)
|
||||
/* 802675B0 90 0D 8B E0 */ stw r0, Zero__5csXyz(r13)
|
||||
/* 802675B4 A0 01 00 0C */ lhz r0, 0xc(r1)
|
||||
/* 802675B8 B0 0D 8B E4 */ sth r0, data_80451164(r13)
|
||||
/* 802675B8 B0 0D 8B E4 */ sth r0, Zero__5csXyz+4(r13)
|
||||
/* 802675BC 38 6D 8B E0 */ la r3, Zero__5csXyz(r13) /* 80451160-_SDA_BASE_ */
|
||||
/* 802675C0 3C 80 80 02 */ lis r4, __dt__5csXyzFv@ha
|
||||
/* 802675C4 38 84 8B D0 */ addi r4, r4, __dt__5csXyzFv@l
|
||||
|
||||
@@ -12,7 +12,7 @@ lbl_80151A54:
|
||||
/* 80151A7C 7C DC 33 78 */ mr r28, r6
|
||||
/* 80151A80 80 0D 8B E0 */ lwz r0, Zero__5csXyz(r13)
|
||||
/* 80151A84 90 01 00 08 */ stw r0, 8(r1)
|
||||
/* 80151A88 A0 0D 8B E4 */ lhz r0, data_80451164(r13)
|
||||
/* 80151A88 A0 0D 8B E4 */ lhz r0, Zero__5csXyz+4(r13)
|
||||
/* 80151A8C B0 01 00 0C */ sth r0, 0xc(r1)
|
||||
/* 80151A90 3B A0 00 00 */ li r29, 0
|
||||
/* 80151A94 3B 00 00 00 */ li r24, 0
|
||||
|
||||
@@ -392,7 +392,7 @@ lbl_80251AD8:
|
||||
lbl_80251AE8:
|
||||
/* 80251AE8 80 0D 8B E0 */ lwz r0, Zero__5csXyz(r13)
|
||||
/* 80251AEC 90 01 00 10 */ stw r0, 0x10(r1)
|
||||
/* 80251AF0 A0 0D 8B E4 */ lhz r0, data_80451164(r13)
|
||||
/* 80251AF0 A0 0D 8B E4 */ lhz r0, Zero__5csXyz+4(r13)
|
||||
/* 80251AF4 B0 01 00 14 */ sth r0, 0x14(r1)
|
||||
/* 80251AF8 3A C0 00 00 */ li r22, 0
|
||||
/* 80251AFC 3B 20 00 00 */ li r25, 0
|
||||
|
||||
@@ -9,7 +9,7 @@ lbl_80251EF8:
|
||||
/* 80251F14 7C 7D 1B 78 */ mr r29, r3
|
||||
/* 80251F18 80 0D 8B E0 */ lwz r0, Zero__5csXyz(r13)
|
||||
/* 80251F1C 90 01 00 08 */ stw r0, 8(r1)
|
||||
/* 80251F20 A0 0D 8B E4 */ lhz r0, data_80451164(r13)
|
||||
/* 80251F20 A0 0D 8B E4 */ lhz r0, Zero__5csXyz+4(r13)
|
||||
/* 80251F24 B0 01 00 0C */ sth r0, 0xc(r1)
|
||||
/* 80251F28 3B C0 00 00 */ li r30, 0
|
||||
/* 80251F2C 3B 80 00 00 */ li r28, 0
|
||||
|
||||
@@ -6,7 +6,7 @@ lbl_8001C174:
|
||||
/* 8001C184 7C E8 3B 78 */ mr r8, r7
|
||||
/* 8001C188 80 0D 8B E0 */ lwz r0, Zero__5csXyz(r13)
|
||||
/* 8001C18C 90 01 00 08 */ stw r0, 8(r1)
|
||||
/* 8001C190 A0 0D 8B E4 */ lhz r0, data_80451164(r13)
|
||||
/* 8001C190 A0 0D 8B E4 */ lhz r0, Zero__5csXyz+4(r13)
|
||||
/* 8001C194 B0 01 00 0C */ sth r0, 0xc(r1)
|
||||
/* 8001C198 7D 25 4B 78 */ mr r5, r9
|
||||
/* 8001C19C 38 E1 00 08 */ addi r7, r1, 8
|
||||
|
||||
@@ -18,7 +18,7 @@ lbl_8001C240:
|
||||
lbl_8001C280:
|
||||
/* 8001C280 80 0D 8B E0 */ lwz r0, Zero__5csXyz(r13)
|
||||
/* 8001C284 90 01 00 08 */ stw r0, 8(r1)
|
||||
/* 8001C288 A0 0D 8B E4 */ lhz r0, data_80451164(r13)
|
||||
/* 8001C288 A0 0D 8B E4 */ lhz r0, Zero__5csXyz+4(r13)
|
||||
/* 8001C28C B0 01 00 0C */ sth r0, 0xc(r1)
|
||||
/* 8001C290 28 1E 00 00 */ cmplwi r30, 0
|
||||
/* 8001C294 41 82 00 20 */ beq lbl_8001C2B4
|
||||
|
||||
@@ -13,7 +13,7 @@ lbl_8001C3E0:
|
||||
/* 8001C40C 7D 3F 4B 78 */ mr r31, r9
|
||||
/* 8001C410 80 0D 8B E0 */ lwz r0, Zero__5csXyz(r13)
|
||||
/* 8001C414 90 01 00 10 */ stw r0, 0x10(r1)
|
||||
/* 8001C418 A0 0D 8B E4 */ lhz r0, data_80451164(r13)
|
||||
/* 8001C418 A0 0D 8B E4 */ lhz r0, Zero__5csXyz+4(r13)
|
||||
/* 8001C41C B0 01 00 14 */ sth r0, 0x14(r1)
|
||||
/* 8001C420 2C 1C 00 FF */ cmpwi r28, 0xff
|
||||
/* 8001C424 40 82 00 0C */ bne lbl_8001C430
|
||||
|
||||
@@ -2,5 +2,19 @@
|
||||
#define C_LIST_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "SSystem/SComponent/c_node.h"
|
||||
|
||||
typedef struct node_list_class {
|
||||
node_class* mpHead;
|
||||
node_class* mpTail;
|
||||
int mSize;
|
||||
} node_list_class;
|
||||
|
||||
void cLs_Init(node_list_class* pList);
|
||||
int cLs_SingleCut(node_class* pNode);
|
||||
int cLs_Addition(node_list_class* pList, node_class* pNode);
|
||||
int cLs_Insert(node_list_class* pList, int idx, node_class* pNode);
|
||||
node_class* cLs_GetFirst(node_list_class* pList);
|
||||
void cLs_Create(node_list_class* pList);
|
||||
|
||||
#endif /* C_LIST_H */
|
||||
|
||||
@@ -2,5 +2,10 @@
|
||||
#define C_LIST_ITER_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "SSystem/SComponent/c_list.h"
|
||||
#include "SSystem/SComponent/c_node_iter.h"
|
||||
|
||||
int cLsIt_Method(node_list_class* pList, cNdIt_MethodFunc pMethod, void* pUserData);
|
||||
void* cLsIt_Judge(node_list_class* pList, cNdIt_JudgeFunc pJudge, void* pUserData);
|
||||
|
||||
#endif /* C_LIST_ITER_H */
|
||||
|
||||
@@ -3,4 +3,17 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
// TODO: move to correct include
|
||||
struct JKRHeap {
|
||||
/* 802CE4D4 */ void *alloc(u32, int);
|
||||
/* 802CE548 */ void free(void*);
|
||||
};
|
||||
|
||||
struct cMl {
|
||||
static JKRHeap *Heap;
|
||||
/* 80263220 */ static void init(JKRHeap*);
|
||||
/* 80263228 */ static void *memalignB(int, u32);
|
||||
/* 80263260 */ static void free(void*);
|
||||
};
|
||||
|
||||
#endif /* C_MALLOC_H */
|
||||
|
||||
@@ -3,4 +3,17 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
s16 cM_rad2s(float);
|
||||
u16 U_GetAtanTable(float, float);
|
||||
s16 cM_atan2s(float, float);
|
||||
float cM_atan2f(float, float);
|
||||
void cM_initRnd(int, int, int);
|
||||
float cM_rnd(void);
|
||||
float cM_rndF(float);
|
||||
float cM_rndFX(float);
|
||||
void cM_initRnd2(int, int, int);
|
||||
float cM_rnd2(void);
|
||||
float cM_rndF2(float);
|
||||
float cM_rndFX2(float);
|
||||
|
||||
#endif /* C_MATH_H */
|
||||
|
||||
@@ -3,4 +3,27 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
typedef struct node_class {
|
||||
struct node_class* mpPrevNode;
|
||||
void* mpData;
|
||||
struct node_class* mpNextNode;
|
||||
} node_class;
|
||||
|
||||
void cNd_Join(node_class* pA, node_class* pB);
|
||||
int cNd_LengthOf(node_class* pNode);
|
||||
node_class* cNd_First(node_class* pNode);
|
||||
node_class* cNd_Last(node_class* pNode);
|
||||
node_class* cNd_Order(node_class* pNode, int idx);
|
||||
void cNd_SingleCut(node_class* pNode);
|
||||
void cNd_Cut(node_class* pNode);
|
||||
void cNd_Addition(node_class* pA, node_class* pB);
|
||||
void cNd_Insert(node_class* pA, node_class* pB);
|
||||
void cNd_SetObject(node_class* pNode, void* pData);
|
||||
void cNd_ClearObject(node_class* pNode);
|
||||
void cNd_ForcedClear(node_class* pNode);
|
||||
void cNd_Create(node_class* pNode, void* pData);
|
||||
|
||||
#define NODE_GET_PREV(pNode) (pNode ? pNode->mpPrevNode : NULL)
|
||||
#define NODE_GET_NEXT(pNode) (pNode ? pNode->mpNextNode : NULL)
|
||||
|
||||
#endif /* C_NODE_H */
|
||||
|
||||
@@ -2,5 +2,12 @@
|
||||
#define C_NODE_ITER_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "SSystem/SComponent/c_node.h"
|
||||
|
||||
typedef int (*cNdIt_MethodFunc)(node_class* pNode, void* pUserData);
|
||||
int cNdIt_Method(node_class* pNode, cNdIt_MethodFunc pMethod, void* pUserData);
|
||||
|
||||
typedef void* (*cNdIt_JudgeFunc)(node_class* pNode, void* pUserData);
|
||||
void* cNdIt_Judge(node_class* pNode, cNdIt_JudgeFunc pJudge, void* pUserData);
|
||||
|
||||
#endif /* C_NODE_ITER_H */
|
||||
|
||||
@@ -3,4 +3,28 @@
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
typedef int (*cPhs__Handler)(void*);
|
||||
|
||||
enum cPhs__Step {
|
||||
cPhs_ZERO_e = 0x00,
|
||||
// names from Wind Waker debug strings
|
||||
cPhs_COMPLEATE_e = 0x04,
|
||||
cPhs_ERROR_e = 0x05,
|
||||
cPhs_NEXT_e = 0x06,
|
||||
};
|
||||
|
||||
typedef struct request_of_phase_process_class {
|
||||
cPhs__Handler* mpHandlerTable;
|
||||
int mPhaseStep;
|
||||
} request_of_phase_process_class;
|
||||
|
||||
void cPhs_Reset(request_of_phase_process_class* pPhase);
|
||||
void cPhs_Set(request_of_phase_process_class* pPhase, cPhs__Handler* pHandlerTable);
|
||||
void cPhs_UnCompleate(request_of_phase_process_class* pPhase);
|
||||
int cPhs_Compleate(request_of_phase_process_class* pPhase);
|
||||
int cPhs_Next(request_of_phase_process_class* pPhase);
|
||||
int cPhs_Do(request_of_phase_process_class* pPhase, void* pUserData);
|
||||
int cPhs_Handler(request_of_phase_process_class* pPhase, cPhs__Handler* pHandlerTable,
|
||||
void* pUserData);
|
||||
|
||||
#endif /* C_PHASE_H */
|
||||
|
||||
@@ -2,5 +2,23 @@
|
||||
#define C_TAG_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "SSystem/SComponent/c_list.h"
|
||||
#include "SSystem/SComponent/c_node.h"
|
||||
#include "SSystem/SComponent/c_tree.h"
|
||||
|
||||
typedef struct create_tag_class {
|
||||
node_class mpNode;
|
||||
void* mpTagData;
|
||||
s8 mbIsUse;
|
||||
} create_tag_class;
|
||||
|
||||
int cTg_IsUse(create_tag_class* pTag);
|
||||
int cTg_SingleCutFromTree(create_tag_class* pTag);
|
||||
int cTg_AdditionToTree(node_lists_tree_class* pTree, int listIdx, create_tag_class* pTag);
|
||||
int cTg_InsertToTree(node_lists_tree_class* pTree, int listIdx, create_tag_class* pTag, int idx);
|
||||
node_class* cTg_GetFirst(node_list_class* pTag);
|
||||
int cTg_SingleCut(create_tag_class* pTag);
|
||||
int cTg_Addition(node_list_class* pList, create_tag_class* pTag);
|
||||
void cTg_Create(create_tag_class* pTag, void* pData);
|
||||
|
||||
#endif /* C_TAG_H */
|
||||
|
||||
@@ -2,5 +2,21 @@
|
||||
#define C_TAG_ITER_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "SSystem/SComponent/c_node_iter.h"
|
||||
#include "SSystem/SComponent/c_tag.h"
|
||||
|
||||
typedef struct method_filter {
|
||||
cNdIt_MethodFunc mpMethodFunc;
|
||||
void* mpUserData;
|
||||
} method_filter;
|
||||
|
||||
typedef struct judge_filter {
|
||||
cNdIt_JudgeFunc mpJudgeFunc;
|
||||
void* mpUserData;
|
||||
} judge_filter;
|
||||
|
||||
int cTgIt_MethodCall(create_tag_class* pTag, method_filter* pMethodFilter);
|
||||
void* cTgIt_JudgeFilter(create_tag_class* pTag, judge_filter* pJudgeFilter);
|
||||
|
||||
|
||||
#endif /* C_TAG_ITER_H */
|
||||
|
||||
@@ -2,5 +2,17 @@
|
||||
#define C_TREE_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "SSystem/SComponent/c_list.h"
|
||||
#include "SSystem/SComponent/c_node.h"
|
||||
|
||||
typedef struct node_lists_tree_class {
|
||||
node_list_class* mpLists;
|
||||
int mNumLists;
|
||||
} node_lists_tree_class;
|
||||
|
||||
int cTr_SingleCut(node_class* pNode);
|
||||
int cTr_Addition(node_lists_tree_class* pTree, int listIdx, node_class* pNode);
|
||||
int cTr_Insert(node_lists_tree_class* pTree, int listIdx, node_class* pNode, int idx);
|
||||
void cTr_Create(node_lists_tree_class* pTree, node_list_class* pLists, int numLists);
|
||||
|
||||
#endif /* C_TREE_H */
|
||||
|
||||
@@ -2,5 +2,11 @@
|
||||
#define C_TREE_ITER_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "SSystem/SComponent/c_node_iter.h"
|
||||
#include "SSystem/SComponent/c_tree.h"
|
||||
|
||||
int cTrIt_Method(node_lists_tree_class* pTree, cNdIt_MethodFunc pJudgeFunc, void* pUserData);
|
||||
void* cTrIt_Judge(node_lists_tree_class* pTree, cNdIt_JudgeFunc pJudgeFunc, void* pUserData);
|
||||
|
||||
|
||||
#endif /* C_TREE_ITER_H */
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
#ifndef MSL_MATH_H_
|
||||
#define MSL_MATH_H_
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
extern "C" {
|
||||
f64 acos(f64);
|
||||
f32 acosf(f32);
|
||||
f64 asin(f64);
|
||||
f64 atan(f64);
|
||||
f64 atan2(f64);
|
||||
f64 ceil(f64);
|
||||
f64 copysign(f64, f64);
|
||||
f64 cos(f64);
|
||||
f32 cosf(f32);
|
||||
f64 exp(f64);
|
||||
|
||||
extern f32 __fabsf(f32);
|
||||
inline f64 fabs(f64 f) {
|
||||
return __fabsf(f);
|
||||
}
|
||||
inline f64 fabsf2(f32 f) {
|
||||
return __fabsf(f);
|
||||
}
|
||||
inline f32 fabsf(f32 f) {
|
||||
return fabsf2(f);
|
||||
}
|
||||
|
||||
f64 floor(f64);
|
||||
f64 fmod(f64, f64);
|
||||
inline f32 fmodf(f32 f1, f32 f2) {
|
||||
return fmod(f1, f2);
|
||||
}
|
||||
inline s32 fpclassify(f32 f) {
|
||||
u32 var = *(u32*)&f;
|
||||
switch (var & 0x7F800000) {
|
||||
case 0x7F800000:
|
||||
if ((var & 0x7FFFFF) != 0) {
|
||||
return 1;
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
case 0:
|
||||
if ((var & 0x7FFFFF) != 0) {
|
||||
return 5;
|
||||
} else {
|
||||
return 3;
|
||||
}
|
||||
default:
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
f64 frexp(f64, s32*);
|
||||
f64 ldexp(f64, s32);
|
||||
f64 modf(f64, f64*);
|
||||
f64 pow(f64, f64);
|
||||
f64 sin(f64);
|
||||
f32 sinf(f32);
|
||||
f64 sqrt(f64);
|
||||
f64 tan(f64);
|
||||
f32 tanf(f32);
|
||||
}
|
||||
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user