mirror of
https://github.com/izzy2lost/Starship.git
synced 2026-07-05 15:19:42 -07:00
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:
Vendored
+3
-1
@@ -42,6 +42,8 @@
|
||||
"symbol_addrs_overlays": "cpp",
|
||||
"fox_option.h": "c",
|
||||
"cstdlib": "c",
|
||||
"typeinfo": "c"
|
||||
"typeinfo": "c",
|
||||
"sym_addrs_funcs": "c",
|
||||
"*.txt": "c"
|
||||
},
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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
Reference in New Issue
Block a user