Proposed names for library stuff (#29)

* get this started

* linker scripts fixed

* oh god what now

* names

* the blue pill

* names, perhaps

* save

* clean out structs

* save for later again

* more names

* save, again
This commit is contained in:
petrie911
2023-11-24 16:11:20 -03:00
committed by GitHub
parent e0cc3dbc0e
commit d32854ced1
38 changed files with 1455 additions and 1350 deletions
+3 -1
View File
@@ -42,6 +42,8 @@
"symbol_addrs_overlays": "cpp",
"fox_option.h": "c",
"cstdlib": "c",
"typeinfo": "c"
"typeinfo": "c",
"sym_addrs_funcs": "c",
"*.txt": "c"
},
}
+1 -1
View File
@@ -267,7 +267,7 @@ clean:
@git clean -fdx assets/
@git clean -fdx bin/
@git clean -fdx build/
@git clean -fdx linker_scripts/
@git clean -fdx linker_scripts/*.ld
format:
@$(TOOLS)/format.py -j $(N_THREADS)
+24 -23
View File
@@ -4,19 +4,19 @@
#include "structs.h"
#include "fox_option.h"
void func_8000291C(void);
void func_800029A8(void);
void func_80002AF4(void);
void func_80002BE8(void);
void func_80002C50(void);
void func_80002CB8(void);
void func_8000316C(Gfx** dList);
void func_800032B4(Gfx** dList);
void func_800033E0(void* var_s2, void* var_s1, s32 var_s0);
void func_800034E8(u8 arg0);
void Controller_Init(void);
void Controller_UpdateInput(void);
void Controller_ReadData(void);
void Save_ReadData(void);
void Save_WriteData(void);
void Controller_Rumble(void);
void Lib_Perspective(Gfx** dList);
void Lib_Ortho(Gfx** dList);
void Lib_DmaRead(void* src, void* dst, s32 size);
void Lib_FillScreen(u8 setFill);
void func_8000372C(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG, s32 colB, s32 ambR, s32 ambG, s32 ambB);
void func_800038AC(Gfx** dList, s32 dir1x, s32 dir1y, s32 dir1z, s32 dir2x, s32 dir2y, s32 dir2z, s32 col1r, s32 col1g,
void Lights_SetOneLight(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG, s32 colB, s32 ambR, s32 ambG, s32 ambB);
void Lights_SetTwoLights(Gfx** dList, s32 dir1x, s32 dir1y, s32 dir1z, s32 dir2x, s32 dir2y, s32 dir2z, s32 col1r, s32 col1g,
s32 col1b, s32 col2r, s32 col2g, s32 col2b, s32 ambR, s32 ambG, s32 ambB);
f32 Math_ModF(f32 value, f32 mod);
void Rand_Init(void);
@@ -48,18 +48,18 @@ void Matrix_GetXYZAngles(Matrix*, Vec3f*);
void Matrix_LookAt(Matrix*, f32, f32, f32, f32, f32, f32, f32, f32, f32, u8);
void Matrix_SetGfxMtx(Gfx**);
s32 func_80006FD8(u64 arg0, void* arg2, s32* arg3, s32 arg4);
s32 Timer_CreateTask(u64, TimerAction, s32*, s32);
void func_80006F20(void);
void* func_80006F38(s32);
void Memory_FreeAll(void);
void* Memory_Allocate(s32);
void func_80007068(s32* arg0, s32 arg1);
void func_8000707C(s32* arg0, s32 arg1);
void func_80007088(UnkStruct_func_80007088*);
void func_800070C8(u64);
void Timer_Increment(s32* address, s32 value);
void Timer_SetValue(s32* address, s32 value);
void Timer_CompleteTask(TimerTask*);
void Timer_Wait(u64);
s32 func_800071FC(SaveFile*);
s32 func_800072E0(SaveFile*);
s32 Save_WriteEeprom(SaveFile*);
s32 Save_ReadEeprom(SaveFile*);
void Fault_ThreadEntry(void*);
void func_80007FE4(FrameBuffer*, u16, u16);
@@ -136,6 +136,7 @@ s64 __ll_rshift(s64, s64);
void func_8002E3E0(Object_2F4 *arg0);
void func_8002E548(void);
void func_8002F5F4(void);
void func_8003DAF0(void);
void func_8003DE68(s32, s32);
void func_80040CDC(void);
@@ -305,8 +306,8 @@ void func_800C20B0(void);
void func_800C2190(void);
u16 func_800C2890(u16*);
s32 func_800C2F30(u16*, s32);
s32 func_800C3084(void);
s32 func_800C3194(void);
s32 Save_Write(void);
s32 Save_Read(void);
void func_EFFA40_80187520(s32, void*);
+7 -7
View File
@@ -19,13 +19,13 @@
#include "gfx.h"
typedef enum {
SI_MESG_10 = 10,
SI_MESG_11,
SI_MESG_12,
SI_MESG_13,
SI_MESG_14,
SI_MESG_15,
SI_MESG_16,
SI_READ_CONTROLLER = 10,
SI_READ_SAVE,
SI_WRITE_SAVE,
SI_RUMBLE,
SI_SAVE_FAILED,
SI_SAVE_SUCCESS,
SI_CONT_READ_DONE,
} SerialMesg;
#define MSG_QUEUE_EMPTY -1
+23 -24
View File
@@ -33,15 +33,15 @@ typedef struct {
/* 0xC */ s32 compFlag;
} DmaEntry; // size = 0x10;
typedef void (*unkFunc_80007088)(s32*, s32);
typedef void (*TimerAction)(s32*, s32);
typedef struct {
/* 0x00 */ u8 unk0;
/* 0x08 */ OSTimer unk8;
/* 0x28 */ unkFunc_80007088 unk28;
/* 0x2C */ s32* unk2C;
/* 0x30 */ s32 unk30;
} UnkStruct_func_80007088; // size = 0x38, 0x8 aligned
/* 0x00 */ u8 active;
/* 0x08 */ OSTimer timer;
/* 0x28 */ TimerAction action;
/* 0x2C */ s32* address;
/* 0x30 */ s32 value;
} TimerTask; // size = 0x38, 0x8 aligned
typedef struct {
u16 data[240 * 320];
@@ -54,7 +54,7 @@ typedef struct {
/* bit 5 */ u8 unk_5 : 1;
/* bit 6 */ u8 unk_6 : 1;
/* bit 7 */ u8 unk_7 : 1;
} Save_00_SubStruct_00; // size = 0x1
} Save_SubStruct_00; // size = 0x1
typedef struct {
/* bit 0 */ u16 unk_0 : 8;
@@ -63,10 +63,10 @@ typedef struct {
/* bit D */ u16 unk_D : 1;
/* bit E */ u16 unk_E : 1;
/* bit F */ u16 unk_F : 1;
} Save_00_SubStruct_5E; // size = 0x10
} Save_SubStruct_5E; // size = 0x10
typedef struct Save_00 {
/* 0x00 */ Save_00_SubStruct_00 unk_00[16];
typedef struct{
/* 0x00 */ Save_SubStruct_00 unk_00[16];
/* 0x10 */ char pad10[0x4];
/* 0x14 */ u8 unk_14;
/* 0x15 */ u8 unk_15;
@@ -76,24 +76,23 @@ typedef struct Save_00 {
/* 0x36 */ u8 unk_36[10];
/* 0x40 */ s8 unk_40[10];
/* 0x4A */ char pad4A[0x14];
/* 0x5E */ Save_00_SubStruct_5E unk_5E[10][7];
/* 0x5E */ Save_SubStruct_5E unk_5E[10][7];
/* 0xEA */ u8 unk_EA;
/* 0xEB */ char padEB[0x3];
} Save_00;
/* 0xEE */ char padEE[0x10];
} SaveData; // size = 0xFE
typedef struct {
/* 0x00 */ u8 unk_00[0xFE];
/* 0xFE */ u16 unk_FE;
} Checksum;
/* 0x00 */ union {
SaveData data;
u8 raw[sizeof(SaveData)];
};
/* 0xFE */ u16 checksum;
} Save;
typedef union {
/* 0x00 */ Save_00 save_00;
/* 0x00 */ Checksum checksum;
} Save; // size = 0x100
typedef union {
Save save[2];
u8 raw[EEPROM_BLOCK_SIZE*EEPROM_MAXBLOCKS];
typedef struct {
/* 0x000 */ Save save;
/* 0x100 */ Save backup;
} SaveFile; // size = 0x200
typedef struct {
+58 -59
View File
@@ -10,7 +10,7 @@ extern u8 gF3dexData;
extern u8 D_8003B50[];
extern u8 D_80046B0[];
extern s32 D_800C45D0;
extern s32 sGammaMode;
extern f32 D_800C45E0[];
extern Mtx gIdentityMtx; // 800C4620
@@ -18,8 +18,8 @@ extern Matrix gIdentityMatrix; //800C4660
extern u8 sFaultCharIndex[];
extern s32 sFaultCharPixelFlags[];
extern const char* D_800C4870[];
extern const char* D_800C48B8[];
extern const char* sFaultCauses[];
extern const char* sFloatExceptions[];
extern Vec3f D_800C5D28;
extern f32 D_800C5D34;
@@ -33,62 +33,61 @@ extern OSMesgQueue* D_800C7C64;
extern char D_800C7C80[];
extern OSContPad D_800DD880[4];
extern OSContPad D_800DD898[4];
extern u8 D_800DD8B0[4];
extern s32 D_800DD8B4;
extern u8 D_800DD8B8[4];
extern u8 D_800DD8BC[4]; // Fake symbol. Only exists as loop terminator for D_800DD8B8
// extern OSContPad D_800DD8C0[4];
// extern OSContPad D_800DD8D8[4];
extern OSContPad gCurrentInput[4];
extern OSContPad gChangedInput[4];
extern u8 gControllerStatus[4];
extern s32 gStopInputTimer;
extern u8 gRumbleStatus[4];
extern u8 D_800DD8BC[4]; // Fake symbol. Only exists as loop terminator for gRumbleStatus
// extern OSContPad sNextInput[4];
// extern OSContPad sPrevInput[4];
// extern OSContStatus D_800DD8F0[4];
// extern OSPfs D_800DD900[4];
extern u8 gAudioThreadStack[0x1000]; // 800DDAA0
extern OSThread gGraphicsThread; // 800DEAA0
extern u8 gGraphicsThreadStack[0x1000]; // 800DEC50
extern OSThread gUnkThread3; // 800DFC50
extern u8 gUnkThread3Stack[0x1000]; // 800DFE00
extern OSThread gTimerThread; // 800DFC50
extern u8 gTimerThreadStack[0x1000]; // 800DFE00
extern OSThread gSerialThread; // 800E0E00
extern u8 gSerialThreadStack[0x1000]; // 800E0FB0
extern u8 gUnusedStack[0x1000];
extern SPTask* gCurrentTask;
extern SPTask* D_800E1FB4[1];
extern SPTask* D_800E1FB8[2];
extern SPTask* D_800E1FC0[2];
extern SPTask* D_800E1FC8[2];
extern SPTask* sAudioTasks[1];
extern SPTask* sGfxTasks[2];
extern SPTask* sNewAudioTasks[1];
extern SPTask* sNewGfxTasks[2];
extern u32 gSegments[16]; // 800E1FD0
extern OSMesgQueue gPiMgrCmdQueue; // 800E2010
extern OSMesg sPiMgrCmdBuff[50]; // 800E2028
extern OSMesgQueue D_800E20F0;
extern void *D_800E2108[1];
extern OSIoMesg D_800E2110;
extern OSMesgQueue gDmaMsgQueue;
extern void *sDmaMsgBuff[1];
extern OSIoMesg gDmaIOMsg;
extern OSMesgQueue gSerialEventQueue;
extern void *D_800E2140[1];
extern void *sSerialEventBuff[1];
extern OSMesgQueue gMainThreadMsgQueue;
extern void *D_800E2160[32];
extern void *sMainThreadMsgBuff[32];
extern OSMesgQueue gTaskMsgQueue;
extern void *D_800E21F8[16];
extern OSMesgQueue D_800E2238;
extern void *D_800E2250[1];
extern OSMesgQueue D_800E2258;
extern void *D_800E2270[1];
extern OSMesgQueue D_800E2278;
extern void *D_800E2290[4];
extern OSMesgQueue D_800E22A0;
extern void *D_800E22B8[2];
extern void *sTaskMsgBuff[16];
extern OSMesgQueue gAudioVImsgQueue;
extern void *sAudioVImsgBuff[1];
extern OSMesgQueue gAudioTaskMsgQueue;
extern void *sAudioTaskMsgBuff[1];
extern OSMesgQueue gGfxVImsgQueue;
extern void *sGfxVImsgBuff[4];
extern OSMesgQueue gGfxTaskMsgQueue;
extern void *sGfxTaskMsgBuff[2];
extern OSMesgQueue gSerialThreadMsgQueue;
extern void *D_800E22D8[8];
extern OSMesgQueue D_800E22F8;
extern void *D_800E2310[1];
extern OSMesgQueue D_800E2318;
extern void *D_800E2330[1];
extern OSMesgQueue gThread7msgQueue;
extern void *D_800E2350[16];
extern OSMesgQueue D_800E2390;
extern void *D_800E23A8[1];
extern void *sSerialThreadMsgBuff[8];
extern OSMesgQueue gControllerMsgQueue;
extern void *sControllerMsgBuff[1];
extern OSMesgQueue gSaveMsgQueue;
extern void *sSaveMsgBuff[1];
extern OSMesgQueue gTimerTaskMsgQueue;
extern void *sTimerTaskMsgBuff[16];
extern OSMesgQueue gTimerWaitMsgQueue;
extern void *sTimerWaitMsgBuff[1];
extern GfxPool gGfxPools[2]; // 800E23B0
@@ -105,26 +104,26 @@ extern s32* D_80137E74;
// some sort of struct?
extern u8 D_80137E78;
extern u32 D_80137E7C;
extern u8 D_80137E80;
extern u8 D_80137E81;
extern u32 gFrameCounter;
extern u8 gStartNMI;
extern u8 gStopTasks;
extern u8 D_80137E84[4];
extern u16 D_80137E88;
extern u16 D_80137E8A;
extern u16 gFillScreenColor;
extern u16 gFillScreen;
extern OSThread sIdleThread; // 80138E90
extern u8 sIdleThreadStack[0x1000]; // 801390A0
extern OSThread gMainThread; // 8013A040
extern u8 sMainThreadStack[0x1000]; // 8013A1F0
extern OSThread gAudioThread; //8013B1F0
// extern OSThread sIdleThread; // 80138E90
// extern u8 sIdleThreadStack[0x1000]; // 801390A0
// extern OSThread gMainThread; // 8013A040
// extern u8 sMainThreadStack[0x1000]; // 8013A1F0
// extern OSThread gAudioThread; //8013B1F0
extern Matrix* D_8013B3C0;
extern Matrix D_8013B3C8[0x20];
extern Matrix* D_8013BBC8;
extern Matrix D_8013BBD0[0x20];
extern Matrix* gGfxMatrix;
extern Matrix sGfxMatrixStack[0x20];
extern Matrix* gCalcMatrix;
extern Matrix sCalcMatrixStack[0x20];
extern SaveFile D_80144F60;
extern SaveFile D_80145160;
extern SaveFile gSaveIOBuffer;
extern SaveFile sPrevSaveData;
extern FaultMgr gFaultMgr;
extern OSMesg D_80156600[1];
@@ -464,7 +463,7 @@ extern f32 D_80178740;
extern s32 D_80178754;
extern s32 D_80178758;
extern s32 D_80178768[];
extern SaveFile D_80178870;
extern SaveFile gSaveFile;
extern u16 D_Tex_800D99F8[];
extern u16 D_Tex_800DBA20[];
@@ -550,7 +549,7 @@ extern s32 D_EBFEB0_801ADA94;
extern u8 D_80281000[0x400];
extern u8 D_80281400[0xC00];
extern FrameBuffer D_80282000; // z buffer
extern FrameBuffer gZBuffer; // z buffer
extern u8 D_802A7800;
extern u8 D_802D7800;
extern s32 D_80387800;
+7 -121
View File
@@ -1,40 +1,7 @@
bootproc = 0x80004DA8;
D_800C90F0 = 0x800C90F0;
__libm_qnan_f = 0x800C9570;
D_1 = 0x1; //ignore:true
Math_ModF = 0x80004E20;
Rand_Init = 0x80004E4C;
Rand_ZeroOne = 0x80004EB0;
Rand_SetSeed = 0x80004FC8;
Rand_ZeroOneSeeded = 0x80004FE8;
Math_Atan2F = 0x80005100;
Math_Atan2F_XY = 0x800051F8;
Math_Atan2F_XYAlt = 0x80005320;
Math_FactorialF = 0x800053C8;
Math_Factorial = 0x800054C8;
Math_PowF = 0x800055DC;
Math_MinMax = 0x80005604;
Matrix_Copy = 0x80005680;
Matrix_Push = 0x80005708;
Matrix_Pop = 0x80005740;
Matrix_Mult = 0x80005754;
Matrix_Translate = 0x80005B00;
Matrix_Scale = 0x80005C34;
Matrix_RotateX = 0x80005D44;
Matrix_RotateY = 0x80005E90;
Matrix_RotateZ = 0x80005FE0;
Matrix_RotateAxis = 0x8000612C;
Matrix_ToMtx = 0x80006500;
Matrix_FromMtx = 0x8000671C;
Matrix_MultVec3f = 0x80006970;
Matrix_MultVec3fNoTranslate = 0x80006A20;
Matrix_GetYRPAngles = 0x80006AB8;
Matrix_GetXYZAngles = 0x80006C7C;
Matrix_LookAt = 0x80006E3C;
Matrix_SetGfxMtx = 0x80006EB8;
D_800C45E0 = 0x800C45E0;
D_800C57EC = 0x800C57EC;
@@ -43,112 +10,31 @@ D_800C5FF4 = 0x800C5FF4; //type:u16 size:5000
D_80163FE0 = 0x80163FE0; //size:0xB130
gZBuffer = 0x80282000;
gFrameBuffers = 0x8038F800;
gDmaTable = 0x80178A70;
D_800D3180 = 0x800D3180; // size:0x1E
gSetupDLs = 0x800D31B0; // size:0x18C0
D_800DD880 = 0x800DD880; // size:0x18
D_800DD898 = 0x800DD898; // size:0x18
D_800DD8B0 = 0x800DD8B0; // size:0x4
D_800DD8B4 = 0x800DD8B4; // size:0x4
D_800DD8B8 = 0x800DD8B8; // size:0x4
D_800DD8BC = 0x800DD8BC; // ignore:true
D_800DD8C0 = 0x800DD8C0; // size:0x18
D_800DD8D8 = 0x800DD8D8; // size:0x18
D_800DD8F0 = 0x800DD8F0; // size:0x10
D_800DD900 = 0x800DD900; // size:0x1A0
D_800CBDD4 = 0x800CBDD4; //size:0x98
D_80178870 = 0x80178870; //size:0x200
D_800E20F0 = 0x800E20F0;
gTaskMsgQueue = 0x800E21E0;
D_800E2238 = 0x800E2238;
D_800E2258 = 0x800E2258;
D_800E2278 = 0x800E2278;
D_800E22A0 = 0x800E22A0;
gSerialEventQueue = 0x800E2128;
gMainThreadMsgQueue = 0x800E2148;
gThread7msgQueue = 0x800E2338;
D_800E2390 = 0x800E2390;
gSerialThreadMsgQueue = 0x800E22C0;
D_800E22F8 = 0x800E22F8;
D_800E2318 = 0x800E2318;
Thread7_ThreadEntry = 0x800040D4;
SerialInterface_ThreadEntry = 0x80003FEC;
gIdentityMtx = 0x800C4620;
gIdentityMatrix = 0x800C4660;
sFaultCharPixelFlags = 0x800C4770;
sFaultCharIndex = 0x800C46F0;
Math_FAtanF = 0x8001FBE8;
Math_FAtan2F = 0x8001FD0C;
Math_FAsinF = 0x8001FE00;
Math_FAcosF = 0x8001FE30;
Fault_Init = 0x80008018;
func_80003C50 = 0x80003C50;
Idle_ThreadEntry = 0x80004D00;
Main_ThreadEntry = 0x80004ABC;
Audio_ThreadEntry = 0x80003B48;
Graphics_ThreadEntry = 0x80004144;
Save_Checksum = 0x800C2FB0;
Save_Write = 0x800C3084;
Save_Read = 0x800C3194;
gSaveFile = 0x80178870; //size:0x200
__rspboot_start = 0x80000450;
__rspboot_end = 0x80000520;
__f3dex_start = 0x80001410;
gF3dexData = 0x800C3DD0;
gAudioThreadStack = 0x800DDAA0;
gGraphicsThread = 0x800DEAA0;
gGraphicsThreadStack = 0x800DEC50;
gUnkThread3 = 0x800DFC50;
gUnkThread3Stack = 0x800DFE00;
gSerialThread = 0x800E0E00;
gSerialThreadStack = 0x800E0FB0;
gCurrentTask = 0x800E1FB0;
D_800E1FB4 = 0x800E1FB4;
D_800E1FB8 = 0x800E1FB8;
D_800E1FC0 = 0x800E1FC0;
D_800E1FC8 = 0x800E1FC8;
D_800CBD3C = 0x800CBD3C;
gPiMgrCmdQueue = 0x800E2010;
sPiMgrCmdBuff = 0x800E2028;
sIdleThread = 0x80138E90;
sIdleThreadStack = 0x80139040;
gMainThread = 0x8013A040;
sMainThreadStack = 0x8013A1F0;
gAudioThread = 0x8013B1F0;
gSegments = 0x800E1FD0;
gGfxPools = 0x800E23B0; // size:0x55AA0
gGfxPool = 0x80137E50;
gGfxTask = 0x80137E54;
gViewport = 0x80137E58;
gGfxMtx = 0x80137E5C;
gUnkDisp1 = 0x80137E60;
gMasterDisp = 0x80137E64;
gUnkDisp2 = 0x80137E68;
gLight = 0x80137E6C;
gFrameBuffer = 0x80137E70;
D_80137E74 = 0x80137E74;
gFrameBuffers = 0x8038F800;
D_8013C3D0 = 0x8013C3D0; // size:0x8800
gFaultMgr = 0x80145360; // size:0x9D8
D_80177E88 = 0x80177E88; // size:0xC
Mio0_Decompress = 0x8001EE70;
RdRam_CheckIPL3 = 0x8001EF10;
D_800CFA54 = 0x800CFA54;
D_800D934C = 0x800D934C; // force_migration:True
@@ -0,0 +1,124 @@
// joybus
Controller_AddDeadZone = 0x80002840;
Controller_Init = 0x8000291C;
Controller_UpdateInput = 0x800029A8;
Controller_ReadData = 0x80002AF4;
Save_ReadData = 0x80002BE8;
Save_WriteData = 0x80002C50;
Controller_Rumble = 0x80002CB8;
// lib
Lib_vsPrintf = 0x80002E80;
Lib_vTable = 0x80002EA0;
Lib_SwapBuffers = 0x80002EE4;
Lib_QuickSort = 0x80002F88;
Lib_Perspective = 0x8000316C;
Lib_Ortho = 0x800032B4;
Lib_DmaRead = 0x800033E0;
Lib_FillScreen = 0x800034E8;
// lights
Lights_AddLight = 0x800035D0;
Lights_SetOneLight = 0x8000372C;
Lights_SetTwoLights = 0x800038AC;
// main
Main_Initialize = 0x80003A50;
Audio_ThreadEntry = 0x80003B48;
Graphics_SetTask = 0x80003C50;
Graphics_InitializeTask = 0x80003DC0;
Main_SetVIMode = 0x80003EE0;
SerialInterface_ThreadEntry = 0x80003FEC;
Timer_ThreadEntry = 0x800040D4;
Graphics_ThreadEntry = 0x80004144;
Main_HandleRDP = 0x80004714;
Main_StartNextTask = 0x800049D4;
Main_ThreadEntry = 0x80004ABC;
Idle_ThreadEntry = 0x80004D00;
bootproc = 0x80004DA8;
// math
Math_ModF = 0x80004E20;
Rand_Init = 0x80004E4C;
Rand_ZeroOne = 0x80004EB0;
Rand_SetSeed = 0x80004FC8;
Rand_ZeroOneSeeded = 0x80004FE8;
Math_Atan2F = 0x80005100;
Math_Atan2F_XY = 0x800051F8;
Math_Atan2F_XYAlt = 0x80005320;
Math_FactorialF = 0x800053C8;
Math_Factorial = 0x800054C8;
Math_PowF = 0x800055DC;
Math_MinMax = 0x80005604;
// matrix
Matrix_Copy = 0x80005680;
Matrix_Push = 0x80005708;
Matrix_Pop = 0x80005740;
Matrix_Mult = 0x80005754;
Matrix_Translate = 0x80005B00;
Matrix_Scale = 0x80005C34;
Matrix_RotateX = 0x80005D44;
Matrix_RotateY = 0x80005E90;
Matrix_RotateZ = 0x80005FE0;
Matrix_RotateAxis = 0x8000612C;
Matrix_ToMtx = 0x80006500;
Matrix_FromMtx = 0x8000671C;
Matrix_MultVec3f = 0x80006970;
Matrix_MultVec3fNoTranslate = 0x80006A20;
Matrix_GetYRPAngles = 0x80006AB8;
Matrix_GetXYZAngles = 0x80006C7C;
Matrix_LookAt = 0x80006E3C;
Matrix_SetGfxMtx = 0x80006EB8;
// memory
Memory_FreeAll = 0x80006F20;
Memory_Allocate = 0x80006F38;
// thread 7
Timer_AllocateTask = 0x80006F60;
Timer_Increment = 0x80007068;
Timer_SetValue = 0x8000707C;
Timer_CompleteTask = 0x80007088;
Timer_Wait = 0x800070C8;
// save
Save_ReadBlock = 0x80007130;
Save_WriteBlock = 0x8000716C;
Save_WriteEeprom = 0x800071FC;
Save_ReadEeprom = 0x800072E0;
// fault
func_800073C0 = 0x800073C0;
func_800074AC = 0x800074AC;
func_80007604 = 0x80007604;
func_8000762C = 0x8000762C;
func_8000770C = 0x8000770C;
func_800077F8 = 0x800077F8;
func_80007880 = 0x80007880;
func_80007910 = 0x80007910;
func_80007CEC = 0x80007CEC;
func_80007FE4 = 0x80007FE4;
Fault_Init = 0x80008018;
// audio
// hasm
Mio0_Decompress = 0x8001EE70;
RdRam_CheckIPL3 = 0x8001EF10;
// math64
Math_FAtanF = 0x8001FBE8;
Math_FAtan2F = 0x8001FD0C;
Math_FAsinF = 0x8001FE00;
Math_FAcosF = 0x8001FE30;
@@ -0,0 +1,121 @@
// joybus
gCurrentInput = 0x800DD880; // size:0x18
gChangedInput = 0x800DD898; // size:0x18
gControllerStatus = 0x800DD8B0; // size:0x4
gStopInputTimer = 0x800DD8B4; // size:0x4
gRumbleStatus = 0x800DD8B8; // size:0x4
D_800DD8BC = 0x800DD8BC; // ignore:true
sNextInput = 0x800DD8C0; // size:0x18
sPrevInput = 0x800DD8D8; // size:0x18
D_800DD8F0 = 0x800DD8F0; // size:0x10
// main
gAudioThreadStack = 0x800DDAA0;
gGraphicsThread = 0x800DEAA0;
gGraphicsThreadStack = 0x800DEC50;
gTimerThread = 0x800DFC50;
gTimerThreadStack = 0x800DFE00;
gSerialThread = 0x800E0E00;
gSerialThreadStack = 0x800E0FB0;
gCurrentTask = 0x800E1FB0;
sAudioTasks = 0x800E1FB4;
sGfxTasks = 0x800E1FB8;
sNewAudioTasks = 0x800E1FC0;
sNewGfxTasks = 0x800E1FC8;
gSegments = 0x800E1FD0;
gPiMgrCmdQueue = 0x800E2010;
sPiMgrCmdBuff = 0x800E2028;
gDmaMsgQueue = 0x800E20F0;
sDmaMsgBuff = 0x800E2108;
gDmaIOMsg = 0x800E2110;
gSerialEventQueue = 0x800E2128;
sSerialEventBuff = 0x800E2140;
gMainThreadMsgQueue = 0x800E2148;
sMainThreadMsgBuff = 0x800E2160;
gTaskMsgQueue = 0x800E21E0;
sTaskMsgBuff = 0x800E21F8;
gAudioVImsgQueue = 0x800E2238;
gAudioTaskMsgQueue = 0x800E2258;
gGfxVImsgQueue = 0x800E2278;
gGfxTaskMsgQueue = 0x800E22A0;
sAudioVImsgBuff = 0x800E2250;
sAudioTaskMsgBuff = 0x800E2270;
sGfxVImsgBuff = 0x800E2290;
sGfxTaskMsgBuff = 0x800E22B8;
gSerialThreadMsgQueue = 0x800E22C0;
sSerialThreadMsgBuff = 0x800E22D8;
gControllerMsgQueue = 0x800E22F8;
sControllerMsgBuff = 0x800E2310;
gSaveMsgQueue = 0x800E2318;
sSaveMsgBuff = 0x800E2330;
gTimerTaskMsgQueue = 0x800E2338;
sTimerTaskMsgBuff = 0x800E2350;
gTimerWaitMsgQueue = 0x800E2390;
sTimerWaitMsgBuff = 0x800E23A8;
gGfxPools = 0x800E23B0; // size:0x55AA0
gGfxPool = 0x80137E50;
gGfxTask = 0x80137E54;
gViewport = 0x80137E58;
gGfxMtx = 0x80137E5C;
gUnkDisp1 = 0x80137E60;
gMasterDisp = 0x80137E64;
gUnkDisp2 = 0x80137E68;
gLight = 0x80137E6C;
gFrameBuffer = 0x80137E70;
D_80137E74 = 0x80137E74;
D_80137E78 = 0x80137E78;
gFrameCounter = 0x80137E7C;
gStartNMI = 0x80137E80;
gStopTasks = 0x80137E81;
D_80137E84 = 0x80137E84; // size:0x4
gFillScreenColor = 0x80137E88;
gFillScreen = 0x80137E8A;
gUnusedStack = 0x80137E90;
sIdleThread = 0x80138E90;
sIdleThreadStack = 0x80139040;
gMainThread = 0x8013A040;
sMainThreadStack = 0x8013A1F0;
gAudioThread = 0x8013B1F0;
// math
sSeededRandSeed3 = 0x8013B3A0;
sRandSeed1 = 0x8013B3A4;
sRandSeed2 = 0x8013B3A8;
sRandSeed3 = 0x8013B3AC;
sSeededRandSeed1 = 0x8013B3B0;
sSeededRandSeed2 = 0x8013B3B4;
// matrix
gIdentityMtx = 0x800C4620;
gIdentityMatrix = 0x800C4660;
gGfxMatrix = 0x8013B3C0;
sGfxMatrixStack = 0x8013B3C8;
gCalcMatrix = 0x8013BBC8;
sCalcMatrixStack = 0x8013BBD0;
// memory
sMemoryBuffer = 0x8013C3D0; // size:0x8800
sMemoryPtr = 0x80144BD0;
// thread 7
sTimerTasks = 0x80144BE0;
// save
gSaveIOBuffer = 0x80144F60;
sPrevSaveData = 0x80145160;
// fault
gFaultMgr = 0x80145360; // size:0x9D8
sFaultCharIndex = 0x800C46F0;
sFaultCharPixelFlags = 0x800C4770;
sFaultCauses = 0x800C4870;
sFloatExceptions = 0x800C48B8;
// audio
+2
View File
@@ -27,3 +27,5 @@
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/__rmonHitCpuFault.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/rmonFindFaultedThreads.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/D_800C9880.s")
+2
View File
@@ -18,3 +18,5 @@ int __rmonSetComm(KKHeader* req) {
return TV_ERROR_NO_ERROR;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmisc/D_800C97D0.s")
+2
View File
@@ -44,3 +44,5 @@ s32 rmonGetRcpRegister(s32 arg0) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/__rmonSetVRegs.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/__rmonGetRegisterContents.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/D_800C9800.s")
-157
View File
@@ -1,157 +0,0 @@
#include "global.h"
#ifdef DATA_IMPORT_PENDING
OSContPad D_800DD880[4];
OSContPad D_800DD898[4];
u8 D_800DD8B0[4];
s32 D_800DD8B4;
u8 D_800DD8B8[4];
OSContPad D_800DD8C0[4]; //
OSContPad D_800DD8D8[4]; //
OSContStatus D_800DD8F0[4]; //
OSPfs D_800DD900[4]; //
#else
extern OSContPad D_800DD8C0[4]; //
extern OSContPad D_800DD8D8[4]; //
extern OSContStatus D_800DD8F0[4]; //
extern OSPfs D_800DD900[4]; //
#endif
void func_80002840(s32 contrNum) {
s32 temp_v0 = D_800DD880[contrNum].stick_x;
s32 temp_a2 = D_800DD880[contrNum].stick_y;
s32 var_a0;
s32 var_v0;
if ((temp_v0 >= -16) && (temp_v0 <= 16)) {
var_a0 = 0;
} else if (temp_v0 > 16) {
var_a0 = temp_v0 - 16;
} else {
var_a0 = temp_v0 + 16;
}
if ((temp_a2 >= -16) && (temp_a2 <= 16)) {
var_v0 = 0;
} else if (temp_a2 > 16) {
var_v0 = temp_a2 - 16;
} else {
var_v0 = temp_a2 + 16;
}
if (var_a0 > 60) {
var_a0 = 60;
}
if (var_a0 < -60) {
var_a0 = -60;
}
if (var_v0 > 60) {
var_v0 = 60;
}
if (var_v0 < -60) {
var_v0 = -60;
}
D_800DD898[contrNum].stick_x = var_a0;
D_800DD898[contrNum].stick_y = var_v0;
}
void func_8000291C(void) {
u8 sp1F;
s32 i;
osContInit(&gSerialEventQueue, &sp1F, D_800DD8F0);
for (i = 0; i < 4; i++) {
D_800DD8B0[i] = (sp1F >> i) & 1;
D_800DD8B8[i] = 0;
}
}
void func_800029A8(void) {
s32 i;
for (i = 0; i < 4; i++) {
if (D_800DD8B0[i] == 1 && D_800DD8C0[i].errno == 0) {
D_800DD8D8[i] = D_800DD880[i];
D_800DD880[i] = D_800DD8C0[i];
D_800DD898[i].button = (D_800DD880[i].button ^ D_800DD8D8[i].button) & D_800DD880[i].button;
func_80002840(i);
} else {
D_800DD880[i].button = D_800DD880[i].stick_x = D_800DD880[i].stick_y = D_800DD880[i].errno =
D_800DD898[i].button = D_800DD898[i].stick_x = D_800DD898[i].stick_y = D_800DD898[i].errno = 0;
}
}
}
#ifdef DATA_IMPORT_PENDING // requires data import on D_800DD8C0
void func_80002AF4(void) {
s32 i;
if (D_800DD8B4 != 0) {
D_800DD8B4--;
for (i = 0; i < 4; i++) {
D_800DD8C0[i].button = D_800DD8C0[i].stick_x = D_800DD8C0[i].stick_y = D_800DD8C0[i].errno = 0;
}
} else {
osContStartReadData(&gSerialEventQueue);
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
osContGetReadData(D_800DD8C0);
}
osSendMesg(&D_800E22F8, (OSMesg) SI_MESG_16, OS_MESG_PRI_NORMAL);
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3440/func_80002AF4.s")
#endif
void func_80002BE8(void) {
if ((D_80137E80 == 0) && (func_800072E0(&D_80144F60) == 0)) {
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_15, OS_MESG_PRI_NORMAL);
return;
}
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_14, OS_MESG_PRI_NORMAL);
}
void func_80002C50(void) {
if ((D_80137E80 == 0) && (func_800071FC(&D_80144F60) == 0)) {
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_15, OS_MESG_PRI_NORMAL);
return;
}
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_14, OS_MESG_PRI_NORMAL);
}
void func_80002CB8(void) {
s32 i;
osContStartQuery(&gSerialEventQueue);
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
osContGetQuery(D_800DD8F0);
for (i = 0; i < 4; i++) {
if ((D_800DD8B0[i] != 0) && (D_800DD8F0[i].errno == 0)) {
if (D_800DD8F0[i].status & 1) {
if (D_800DD8B8[i] == 0) {
if (osMotorInit(&gSerialEventQueue, &D_800DD900[i], i)) {
D_800DD8B8[i] = 0;
} else {
D_800DD8B8[i] = 1;
}
}
if (D_800DD8B8[i] == 1) {
if (D_80137E84[i] != 0) {
if (osMotorStart(&D_800DD900[i])) {
D_800DD8B8[i] = 0;
}
} else {
if (osMotorStop(&D_800DD900[i])) {
D_800DD8B8[i] = 0;
}
}
}
} else {
D_800DD8B8[i] = 0;
}
}
}
for (i = 0; i < 4; i++) {
D_80137E84[i] = 0;
}
}
-42
View File
@@ -1,42 +0,0 @@
#include "global.h"
void func_800033E0(void* var_s2, void* var_s1, ptrdiff_t var_s0) {
osInvalICache(var_s1, var_s0);
osInvalDCache(var_s1, var_s0);
while (var_s0 > 0x100) {
osPiStartDma(&D_800E2110, 0, 0, (uintptr_t) var_s2, var_s1, 0x100, &D_800E20F0);
var_s0 -= 0x100;
var_s2 = (void*) ((uintptr_t) var_s2 + 0x100);
var_s1 = (void*) ((uintptr_t) var_s1 + 0x100);
osRecvMesg(&D_800E20F0, NULL, OS_MESG_BLOCK);
}
if (var_s0 != 0) {
osPiStartDma(&D_800E2110, 0, 0, (uintptr_t) var_s2, var_s1, var_s0, &D_800E20F0);
osRecvMesg(&D_800E20F0, NULL, OS_MESG_BLOCK);
}
}
void func_800034E8(u8 arg0) {
s32 i;
D_80137E88 |= 1;
if (arg0 == 1) {
if (D_80137E8A == 0) {
if (D_80137E88 == 1) {
osViBlack(1);
} else {
for (i = 0; i < 0x3C0; i++) {
D_8038F080[i] = D_80137E88;
}
osWritebackDCacheAll();
osViSwapBuffer(&D_8038F300);
osViRepeatLine(1);
}
D_80137E8A = 1;
}
} else if (D_80137E8A == 1) {
osViRepeatLine(0);
osViBlack(0);
D_80137E8A = 0;
}
}
-15
View File
@@ -1,15 +0,0 @@
#include "global.h"
extern s32 D_8013C3D0[0x2200];
extern s32* D_80144BD0;
void func_80006F20(void) {
D_80144BD0 = D_8013C3D0;
}
void* func_80006F38(s32 arg0) {
void* tmp = D_80144BD0;
D_80144BD0 = (void*) (((arg0 + 0xF) & ~0xF) + (uintptr_t) D_80144BD0);
return tmp;
}
-51
View File
@@ -1,51 +0,0 @@
#include "global.h"
extern UnkStruct_func_80007088 D_80144BE0[0x10];
UnkStruct_func_80007088* func_80006F60(void) {
s32 i;
for (i = 0; i < 0x10; i++) {
if (D_80144BE0[i].unk0 == 0) {
return &D_80144BE0[i];
}
}
return NULL;
}
s32 func_80006FD8(u64 arg0, void* arg2, s32* arg3, s32 arg4) {
UnkStruct_func_80007088* temp_v0;
temp_v0 = func_80006F60();
if (temp_v0 == NULL) {
return -1;
}
temp_v0->unk0 = 1;
temp_v0->unk28 = arg2;
temp_v0->unk2C = arg3;
temp_v0->unk30 = arg4;
return osSetTimer(&temp_v0->unk8, arg0, 0, &gThread7msgQueue, temp_v0);
}
void func_80007068(s32* arg0, s32 arg1) {
*arg0 += arg1;
}
void func_8000707C(s32* arg0, s32 arg1) {
*arg0 = arg1;
}
void func_80007088(UnkStruct_func_80007088* arg0) {
if (arg0->unk28 != NULL) {
arg0->unk28(arg0->unk2C, arg0->unk30);
}
arg0->unk0 = 0;
}
void func_800070C8(u64 arg0) {
OSTimer sp30;
OSMesg sp2C;
osSetTimer(&sp30, arg0, 0, &D_800E2390, NULL);
osRecvMesg(&D_800E2390, &sp2C, OS_MESG_BLOCK);
}
+69 -77
View File
@@ -1,12 +1,52 @@
#include "global.h"
#ifdef DATA_IMPORT_PENDING
FaultMgr gFaultMgr;
s32 sFaultCharPixelFlags[0x40];
u8 sFaultCharIndex[0x80];
const char* D_800C4870[18];
const char* D_800C48B8[6];
#endif
u8 sFaultCharIndex[0x80] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0xFF, 0x2B,
0xFF, 0xFF, 0x25, 0x26, 0xFF, 0x2A, 0xFF, 0x27, 0x2C, 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x09, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14,
0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A,
0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
s32 sFaultCharPixelFlags[0x40] = {
0x70871C30, 0x8988A250, 0x88808290, 0x88831C90, 0x888402F8, 0x88882210, 0x71CF9C10, 0xF9CF9C70,
0x8228A288, 0xF200A288, 0x0BC11C78, 0x0A222208, 0x8A222288, 0x71C21C70, 0x23C738F8, 0x5228A480,
0x8A282280, 0x8BC822F0, 0xFA282280, 0x8A28A480, 0x8BC738F8, 0xF9C89C08, 0x82288808, 0x82088808,
0xF2EF8808, 0x82288888, 0x82288888, 0x81C89C70, 0x8A08A270, 0x920DA288, 0xA20AB288, 0xC20AAA88,
0xA208A688, 0x9208A288, 0x8BE8A270, 0xF1CF1CF8, 0x8A28A220, 0x8A28A020, 0xF22F1C20, 0x82AA0220,
0x82492220, 0x81A89C20, 0x8A28A288, 0x8A28A288, 0x8A289488, 0x8A2A8850, 0x894A9420, 0x894AA220,
0x70852220, 0xF8011000, 0x08020800, 0x10840400, 0x20040470, 0x40840400, 0x80020800, 0xF8011000,
0x70800000, 0x88822200, 0x08820400, 0x108F8800, 0x20821000, 0x00022200, 0x20800020, 0x00000000,
};
const char* sFaultCauses[18] = {
"Interrupt",
"TLB modification",
"TLB exception on load",
"TLB exception on store",
"Address error on load",
"Address error on store",
"Bus error on inst.",
"Bus error on data",
"System call exception",
"Breakpoint exception",
"Reserved instruction",
"Coprocessor unusable",
"Arithmetic overflow",
"Trap exception",
"Virtual coherency on inst.",
"Floating point exception",
"Watchpoint exception",
"Virtual coherency on data",
};
const char* sFloatExceptions[6] = {
"Unimplemented operation", "Invalid operation", "Division by zero", "Overflow", "Underflow", "Inexact operation",
};
void func_800073C0(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
u16* var_v0;
@@ -79,63 +119,15 @@ void func_8000762C(s32 arg0, s32 arg1, const char* fmt, ...) {
va_end(args);
}
void func_8000770C(s32 arg0) {
u64 temp_ret_4 = MSEC_TO_CYCLES(arg0);
void func_8000770C(s32 time) {
u64 time64 = MSEC_TO_CYCLES(time);
osSetTime(0);
while (osGetTime() < temp_ret_4) {
while (osGetTime() < time64) {
;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8240.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C824C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8260.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8278.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8290.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C82A8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C82C0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C82D4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C82E8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8300.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8318.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8330.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8348.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C835C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C836C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8388.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C83A4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C83BC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C83D8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C83F0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8404.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8418.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8424.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8430.s")
void func_800077F8(s32 arg0, s32 arg1, s32 arg2, f32* arg3) {
u32 temp_v0 = *(u32*) arg3;
s32 temp_v1 = ((temp_v0 & 0x7F800000) >> 0x17) - 0x7F;
@@ -154,7 +146,7 @@ void func_80007880(u32 arg0) {
func_8000762C(0x1E, 0xA0, "FPCSR:%08XH", arg0);
for (var_v0 = 0; var_v0 < 6; var_v0++, var_v1 >>= 1) {
if (arg0 & var_v1) {
func_8000762C(0x84, 0xA0, "(%s)", D_800C48B8[var_v0]);
func_8000762C(0x84, 0xA0, "(%s)", sFloatExceptions[var_v0]);
return;
}
}
@@ -174,7 +166,7 @@ void func_80007910(OSThread* thread) {
}
func_8000770C(3000);
func_800073C0(15, 15, 290, 210);
func_8000762C(30, 40, "THREAD:%d (%s)", thread->id, D_800C4870[var_s0]);
func_8000762C(30, 40, "THREAD:%d (%s)", thread->id, sFaultCauses[var_s0]);
func_8000762C(30, 50, "PC:%08XH SR:%08XH\tVA:%08XH", context->pc, context->sr, context->badvaddr);
osWritebackDCacheAll();
func_8000762C(30, 60, "AT:%08XH V0:%08XH\tV1:%08XH", (s32) context->at, (s32) context->v0, (s32) context->v1);
@@ -247,14 +239,14 @@ void Fault_ThreadEntry(void* arg0) {
}
func_8000762C(300, 10, "-");
D_800DD8B0[0] = 1;
gControllerStatus[0] = 1;
while (var_s5 == 0) {
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_10, OS_MESG_PRI_NORMAL);
osRecvMesg(&D_800E22F8, NULL, OS_MESG_BLOCK);
func_800029A8();
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_PRI_NORMAL);
osRecvMesg(&gControllerMsgQueue, NULL, OS_MESG_BLOCK);
Controller_UpdateInput();
switch (var_s0) {
case 0:
if (D_800DD880[0].button == 0x16) {
if (gCurrentInput[0].button == (R_TRIG | D_CBUTTONS | L_CBUTTONS)) {
var_s0++;
var_s2 = 4000;
}
@@ -262,11 +254,11 @@ void Fault_ThreadEntry(void* arg0) {
case 1:
case 2:
case 7:
if (D_800DD880[0].button & 0x10) {
if (D_800DD898[0].button == 0x8000) {
if (gCurrentInput[0].button & R_TRIG) {
if (gChangedInput[0].button == A_BUTTON) {
var_s0++;
var_s2 = 3000;
} else if (D_800DD898[0].button != 0) {
} else if (gChangedInput[0].button != 0) {
var_s0 = 0;
}
}
@@ -274,11 +266,11 @@ void Fault_ThreadEntry(void* arg0) {
case 3:
case 4:
case 8:
if (D_800DD880[0].button & 0x10) {
if (D_800DD898[0].button == 0x4000) {
if (gCurrentInput[0].button & R_TRIG) {
if (gChangedInput[0].button == B_BUTTON) {
var_s0++;
var_s2 = 3000;
} else if (D_800DD898[0].button != 0) {
} else if (gChangedInput[0].button != 0) {
var_s0 = 0;
}
}
@@ -290,21 +282,21 @@ void Fault_ThreadEntry(void* arg0) {
case 11:
case 12:
case 13:
if (D_800DD880[0].button & 0x10) {
if (D_800DD898[0].button == 2) {
if (gCurrentInput[0].button & R_TRIG) {
if (gChangedInput[0].button == L_CBUTTONS) {
var_s0++;
var_s2 = 3000;
} else if (D_800DD898[0].button != 0) {
} else if (gChangedInput[0].button != 0) {
var_s0 = 0;
}
}
break;
case 14:
if (D_800DD880[0].button & 0x10) {
if (D_800DD898[0].button == 0x1000) {
if (gCurrentInput[0].button & R_TRIG) {
if (gChangedInput[0].button == START_BUTTON) {
var_s0++;
var_s2 = 3000;
} else if (D_800DD898[0].button != 0) {
} else if (gChangedInput[0].button != 0) {
var_s0 = 0;
}
}
@@ -337,6 +329,6 @@ void Fault_Init(void) {
gFaultMgr.height = SCREEN_HEIGHT;
osCreateMesgQueue(&gFaultMgr.msgQueue, &gFaultMgr.msg, 1);
osCreateThread(&gFaultMgr.thread, THREAD_ID_FAULT, Fault_ThreadEntry, 0, gFaultMgr.stack + sizeof(gFaultMgr.stack),
0x7F);
127);
osStartThread(&gFaultMgr.thread);
}
+61
View File
@@ -0,0 +1,61 @@
#include "global.h"
SaveFile gSaveFile;
u16 Save_Checksum(Save* arg0) {
u16 var_v1;
s32 i;
for (i = 0, var_v1 = 0; i < sizeof(SaveData); i++) {
var_v1 ^= arg0->raw[i];
var_v1 <<= 1;
var_v1 = (var_v1 & 0xFE) | ((var_v1 >> 8) & 1);
}
var_v1 = (var_v1 & 0xFF) | 0x9500;
return var_v1;
}
s32 Save_Write(void) {
void* sp1C;
gSaveFile.save.checksum = Save_Checksum(&gSaveFile.save);
gSaveFile.backup = gSaveFile.save;
gSaveIOBuffer = gSaveFile;
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_WRITE_SAVE, OS_MESG_PRI_NORMAL);
osRecvMesg(&gSaveMsgQueue, &sp1C, OS_MESG_BLOCK);
if (sp1C != (OSMesg) SI_SAVE_SUCCESS) {
return -1;
}
return 0;
}
s32 Save_Read(void) {
void* sp24;
s32 i;
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_SAVE, OS_MESG_PRI_NORMAL);
osRecvMesg(&gSaveMsgQueue, &sp24, OS_MESG_BLOCK);
if ((s32) sp24 != SI_SAVE_SUCCESS) {
return -1;
}
gSaveFile = gSaveIOBuffer;
if (gSaveFile.save.checksum == Save_Checksum(&gSaveFile.save)) {
(void) "EEPROM ROM[0] 正常\n";
return 0;
}
for (i = 0; i <= sizeof(SaveData); i++) { // should be <, but gets overwritten immediately.
gSaveFile.save.raw[i] = gSaveFile.backup.raw[i];
}
gSaveFile.save.checksum = gSaveFile.backup.checksum;
if (gSaveFile.save.checksum == Save_Checksum(&gSaveFile.save)) {
(void) "EEPROM ROM[1 正常\n";
return 0;
}
(void) "EEPROM ROM[0] & ROM[1] 異常\n";
return -1;
}
+147
View File
@@ -0,0 +1,147 @@
#include "global.h"
OSContPad gCurrentInput[4];
OSContPad gChangedInput[4];
u8 gControllerStatus[4];
s32 gStopInputTimer;
u8 gRumbleStatus[4];
OSContPad sNextInput[4]; //
OSContPad sPrevInput[4]; //
OSContStatus D_800DD8F0[4]; //
OSPfs D_800DD900[4]; //
void Controller_AddDeadZone(s32 contrNum) {
s32 temp_v0 = gCurrentInput[contrNum].stick_x;
s32 temp_a2 = gCurrentInput[contrNum].stick_y;
s32 var_a0;
s32 var_v0;
if ((temp_v0 >= -16) && (temp_v0 <= 16)) {
var_a0 = 0;
} else if (temp_v0 > 16) {
var_a0 = temp_v0 - 16;
} else {
var_a0 = temp_v0 + 16;
}
if ((temp_a2 >= -16) && (temp_a2 <= 16)) {
var_v0 = 0;
} else if (temp_a2 > 16) {
var_v0 = temp_a2 - 16;
} else {
var_v0 = temp_a2 + 16;
}
if (var_a0 > 60) {
var_a0 = 60;
}
if (var_a0 < -60) {
var_a0 = -60;
}
if (var_v0 > 60) {
var_v0 = 60;
}
if (var_v0 < -60) {
var_v0 = -60;
}
gChangedInput[contrNum].stick_x = var_a0;
gChangedInput[contrNum].stick_y = var_v0;
}
void Controller_Init(void) {
u8 sp1F;
s32 i;
osContInit(&gSerialEventQueue, &sp1F, D_800DD8F0);
for (i = 0; i < 4; i++) {
gControllerStatus[i] = (sp1F >> i) & 1;
gRumbleStatus[i] = 0;
}
}
void Controller_UpdateInput(void) {
s32 i;
for (i = 0; i < 4; i++) {
if (gControllerStatus[i] == 1 && sNextInput[i].errno == 0) {
sPrevInput[i] = gCurrentInput[i];
gCurrentInput[i] = sNextInput[i];
gChangedInput[i].button = (gCurrentInput[i].button ^ sPrevInput[i].button) & gCurrentInput[i].button;
Controller_AddDeadZone(i);
} else {
gCurrentInput[i].button = gCurrentInput[i].stick_x = gCurrentInput[i].stick_y = gCurrentInput[i].errno =
gChangedInput[i].button = gChangedInput[i].stick_x = gChangedInput[i].stick_y = gChangedInput[i].errno =
0;
}
}
}
void Controller_ReadData(void) {
s32 i;
if (gStopInputTimer != 0) {
gStopInputTimer--;
for (i = 0; i < 4; i++) {
sNextInput[i].button = sNextInput[i].stick_x = sNextInput[i].stick_y = sNextInput[i].errno = 0;
}
} else {
osContStartReadData(&gSerialEventQueue);
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
osContGetReadData(sNextInput);
}
osSendMesg(&gControllerMsgQueue, (OSMesg) SI_CONT_READ_DONE, OS_MESG_PRI_NORMAL);
}
void Save_ReadData(void) {
if ((gStartNMI == 0) && (Save_ReadEeprom(&gSaveIOBuffer) == 0)) {
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_SUCCESS, OS_MESG_PRI_NORMAL);
return;
}
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_FAILED, OS_MESG_PRI_NORMAL);
}
void Save_WriteData(void) {
if ((gStartNMI == 0) && (Save_WriteEeprom(&gSaveIOBuffer) == 0)) {
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_SUCCESS, OS_MESG_PRI_NORMAL);
return;
}
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_FAILED, OS_MESG_PRI_NORMAL);
}
void Controller_Rumble(void) {
s32 i;
osContStartQuery(&gSerialEventQueue);
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
osContGetQuery(D_800DD8F0);
for (i = 0; i < 4; i++) {
if ((gControllerStatus[i] != 0) && (D_800DD8F0[i].errno == 0)) {
if (D_800DD8F0[i].status & 1) {
if (gRumbleStatus[i] == 0) {
if (osMotorInit(&gSerialEventQueue, &D_800DD900[i], i)) {
gRumbleStatus[i] = 0;
} else {
gRumbleStatus[i] = 1;
}
}
if (gRumbleStatus[i] == 1) {
if (D_80137E84[i] != 0) {
if (osMotorStart(&D_800DD900[i])) {
gRumbleStatus[i] = 0;
}
} else {
if (osMotorStop(&D_800DD900[i])) {
gRumbleStatus[i] = 0;
}
}
}
} else {
gRumbleStatus[i] = 0;
}
}
}
for (i = 0; i < 4; i++) {
D_80137E84[i] = 0;
}
}
+54 -13
View File
@@ -1,16 +1,16 @@
#include "global.h"
s32 func_80002E80(char* dst, char* fmt, va_list args) {
s32 Lib_vsPrintf(char* dst, char* fmt, va_list args) {
return vsprintf(dst, fmt, args);
}
void func_80002EA0(s32 arg0, void (**arg1)(s32, s32), s32 arg2, s32 arg3) {
void Lib_vTable(s32 arg0, void (**arg1)(s32, s32), s32 arg2, s32 arg3) {
void (*temp)(s32, s32) = arg1[arg0];
temp(arg2, arg3);
}
void func_80002EE4(u8* buf1, u8* buf2, s32 len) {
void Lib_SwapBuffers(u8* buf1, u8* buf2, s32 len) {
s32 i;
u8 temp;
@@ -23,7 +23,7 @@ void func_80002EE4(u8* buf1, u8* buf2, s32 len) {
typedef s32 (*CompareFunc)(void*, void*);
void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
void Lib_QuickSort(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
u32 splitIdx;
u8* last;
u8* right;
@@ -34,7 +34,7 @@ void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
if (curLen == 2) {
if (cFunc(first, last) > 0) {
func_80002EE4(first, last, size);
Lib_SwapBuffers(first, last, size);
}
return;
}
@@ -52,15 +52,15 @@ void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
if (left >= right) {
break;
}
func_80002EE4(left, right, size);
Lib_SwapBuffers(left, right, size);
left += size;
right -= size;
}
func_80002EE4(last, left, size);
Lib_SwapBuffers(last, left, size);
splitIdx = (left - first) / size;
if (curLen / 2 < splitIdx) {
if ((curLen - splitIdx) > 2) {
func_80002F88(left + size, curLen - splitIdx - 1, size, cFunc);
Lib_QuickSort(left + size, curLen - splitIdx - 1, size, cFunc);
}
if (splitIdx < 2) {
@@ -70,7 +70,7 @@ void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
curLen = splitIdx;
} else {
if (splitIdx >= 2) {
func_80002F88(first, splitIdx, size, cFunc);
Lib_QuickSort(first, splitIdx, size, cFunc);
}
if ((curLen - splitIdx) <= 2) {
@@ -83,7 +83,7 @@ void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
}
}
void func_8000316C(Gfx** dList) {
void Lib_Perspective(Gfx** dList) {
u16 norm;
guPerspective(gGfxMtx, &norm, D_80161A3C, 1.3333334f, D_80161A40, D_80161A44, 1.0f);
@@ -91,13 +91,54 @@ void func_8000316C(Gfx** dList) {
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
guLookAt(gGfxMtx, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -12800.0f, 0.0f, 1.0f, 0.0f);
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
Matrix_Copy(D_8013B3C0, &gIdentityMatrix);
Matrix_Copy(gGfxMatrix, &gIdentityMatrix);
}
void func_800032B4(Gfx** dList) {
void Lib_Ortho(Gfx** dList) {
guOrtho(gGfxMtx, -160.0f, 160.0f, -120.0f, 120.0f, D_80161A40, D_80161A44, 1.0f);
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
guLookAt(gGfxMtx, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -12800.0f, 0.0f, 1.0f, 0.0f);
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
Matrix_Copy(D_8013B3C0, &gIdentityMatrix);
Matrix_Copy(gGfxMatrix, &gIdentityMatrix);
}
void Lib_DmaRead(void* src, void* dst, ptrdiff_t size) {
osInvalICache(dst, size);
osInvalDCache(dst, size);
while (size > 0x100) {
osPiStartDma(&gDmaIOMsg, 0, 0, (uintptr_t) src, dst, 0x100, &gDmaMsgQueue);
size -= 0x100;
src = (void*) ((uintptr_t) src + 0x100);
dst = (void*) ((uintptr_t) dst + 0x100);
osRecvMesg(&gDmaMsgQueue, NULL, OS_MESG_BLOCK);
}
if (size != 0) {
osPiStartDma(&gDmaIOMsg, 0, 0, (uintptr_t) src, dst, size, &gDmaMsgQueue);
osRecvMesg(&gDmaMsgQueue, NULL, OS_MESG_BLOCK);
}
}
void Lib_FillScreen(u8 setFill) {
s32 i;
gFillScreenColor |= 1;
if (setFill == true) {
if (gFillScreen == false) {
if (gFillScreenColor == 1) {
osViBlack(1);
} else {
for (i = 0; i < 3 * SCREEN_WIDTH; i++) {
D_8038F080[i] = gFillScreenColor;
}
osWritebackDCacheAll();
osViSwapBuffer(&D_8038F300);
osViRepeatLine(1);
}
gFillScreen = true;
}
} else if (gFillScreen == true) {
osViRepeatLine(0);
osViBlack(0);
gFillScreen = false;
}
}

Some files were not shown because too many files have changed in this diff Show More