summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpetrie911 <69443847+petrie911@users.noreply.github.com>2023-11-24 13:11:20 -0600
committerGitHub <noreply@github.com>2023-11-24 16:11:20 -0300
commitd32854ced18eb334bbba4e2e67074bae641688c2 (patch)
tree87f70b39674f4c4587b5e51888fd5cf6738ef10e
parente0cc3dbc0eca3f2b21c948fad3581a4adade713e (diff)
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
-rw-r--r--.vscode/settings.json4
-rw-r--r--Makefile2
-rw-r--r--include/functions.h49
-rw-r--r--include/global.h14
-rw-r--r--include/structs.h49
-rw-r--r--include/variables.h123
-rw-r--r--linker_scripts/us/symbol_addrs.txt128
-rw-r--r--linker_scripts/us/symbol_addrs_nlib_funcs.txt124
-rw-r--r--linker_scripts/us/symbol_addrs_nlib_vars.txt121
-rw-r--r--src/libultra/rmon/rmonbrk.c2
-rw-r--r--src/libultra/rmon/rmonmisc.c2
-rw-r--r--src/libultra/rmon/rmonregs.c2
-rw-r--r--src/main/3440.c157
-rw-r--r--src/main/3FE0.c42
-rw-r--r--src/main/7B20.c15
-rw-r--r--src/main/7B60.c51
-rw-r--r--src/main/fault.c (renamed from src/main/7FC0.c)146
-rw-r--r--src/main/fox_save.c61
-rw-r--r--src/main/joybus.c147
-rw-r--r--src/main/lib.c (renamed from src/main/3A80.c)67
-rw-r--r--src/main/lights.c (renamed from src/main/41D0.c)14
-rw-r--r--src/main/main.c (renamed from src/main/4650.c)311
-rw-r--r--src/main/math.c41
-rw-r--r--src/main/matrix.c16
-rw-r--r--src/main/memory.c15
-rw-r--r--src/main/save.c (renamed from src/main/7D30.c)26
-rw-r--r--src/main/sf_59780.c12
-rw-r--r--src/main/sf_5A0F0.c4
-rw-r--r--src/main/sf_5A2C0.c552
-rw-r--r--src/main/sf_61B30.c86
-rw-r--r--src/main/sf_A24B0.c32
-rw-r--r--src/main/sf_C3BB0.c72
-rw-r--r--src/main/sf_hud.c68
-rw-r--r--src/main/timer.c50
-rw-r--r--src/overlays/ovl_EBFBE0/EBFCA0.c20
-rw-r--r--src/overlays/ovl_EBFBE0/fox_option.c140
-rw-r--r--yamls/us/header.yaml2
-rw-r--r--yamls/us/main.yaml50
38 files changed, 1461 insertions, 1356 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 02b04b43..d87cde38 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -42,6 +42,8 @@
"symbol_addrs_overlays": "cpp",
"fox_option.h": "c",
"cstdlib": "c",
- "typeinfo": "c"
+ "typeinfo": "c",
+ "sym_addrs_funcs": "c",
+ "*.txt": "c"
},
} \ No newline at end of file
diff --git a/Makefile b/Makefile
index 9b4df109..0ea46c11 100644
--- a/Makefile
+++ b/Makefile
@@ -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)
diff --git a/include/functions.h b/include/functions.h
index f4364785..a9dd6a5a 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -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 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 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 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*);
diff --git a/include/global.h b/include/global.h
index ba9e84de..84db6612 100644
--- a/include/global.h
+++ b/include/global.h
@@ -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
diff --git a/include/structs.h b/include/structs.h
index 6bf4f965..6d01f618 100644
--- a/include/structs.h
+++ b/include/structs.h
@@ -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;
-
-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];
+ /* 0x00 */ union {
+ SaveData data;
+ u8 raw[sizeof(SaveData)];
+ };
+ /* 0xFE */ u16 checksum;
+} Save;
+
+typedef struct {
+ /* 0x000 */ Save save;
+ /* 0x100 */ Save backup;
} SaveFile; // size = 0x200
typedef struct {
diff --git a/include/variables.h b/include/variables.h
index 87fce7f8..922b5c8f 100644
--- a/include/variables.h
+++ b/include/variables.h
@@ -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 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 SaveFile D_80144F60;
-extern SaveFile D_80145160;
+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 Matrix* gGfxMatrix;
+extern Matrix sGfxMatrixStack[0x20];
+extern Matrix* gCalcMatrix;
+extern Matrix sCalcMatrixStack[0x20];
+
+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;
diff --git a/linker_scripts/us/symbol_addrs.txt b/linker_scripts/us/symbol_addrs.txt
index 65d92ebc..664d003d 100644
--- a/linker_scripts/us/symbol_addrs.txt
+++ b/linker_scripts/us/symbol_addrs.txt
@@ -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
diff --git a/linker_scripts/us/symbol_addrs_nlib_funcs.txt b/linker_scripts/us/symbol_addrs_nlib_funcs.txt
new file mode 100644
index 00000000..ee17e4c5
--- /dev/null
+++ b/linker_scripts/us/symbol_addrs_nlib_funcs.txt
@@ -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;
+
+
+
+
+
+
+
+
+
+
diff --git a/linker_scripts/us/symbol_addrs_nlib_vars.txt b/linker_scripts/us/symbol_addrs_nlib_vars.txt
new file mode 100644
index 00000000..cbaedde7
--- /dev/null
+++ b/linker_scripts/us/symbol_addrs_nlib_vars.txt
@@ -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
+
+
diff --git a/src/libultra/rmon/rmonbrk.c b/src/libultra/rmon/rmonbrk.c
index a55127cf..167d263e 100644
--- a/src/libultra/rmon/rmonbrk.c
+++ b/src/libultra/rmon/rmonbrk.c
@@ -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")
diff --git a/src/libultra/rmon/rmonmisc.c b/src/libultra/rmon/rmonmisc.c
index 39aadbbd..f9e87496 100644
--- a/src/libultra/rmon/rmonmisc.c
+++ b/src/libultra/rmon/rmonmisc.c
@@ -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")
diff --git a/src/libultra/rmon/rmonregs.c b/src/libultra/rmon/rmonregs.c
index 7fd28ee5..7ded6bfc 100644
--- a/src/libultra/rmon/rmonregs.c
+++ b/src/libultra/rmon/rmonregs.c
@@ -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")
diff --git a/src/main/3440.c b/src/main/3440.c
deleted file mode 100644
index d34c6b0f..00000000
--- a/src/main/3440.c
+++ /dev/null
@@ -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;
- }
-}
diff --git a/src/main/3FE0.c b/src/main/3FE0.c
deleted file mode 100644
index cffee105..00000000
--- a/src/main/3FE0.c
+++ /dev/null
@@ -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;
- }
-}
diff --git a/src/main/7B20.c b/src/main/7B20.c
deleted file mode 100644
index cab1ba38..00000000
--- a/src/main/7B20.c
+++ /dev/null
@@ -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;
-}
diff --git a/src/main/7B60.c b/src/main/7B60.c
deleted file mode 100644
index 5b90e6de..00000000
--- a/src/main/7B60.c
+++ /dev/null
@@ -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);
-}
diff --git a/src/main/7FC0.c b/src/main/fault.c
index 4cfccbbd..80fe1922 100644
--- a/src/main/7FC0.c
+++ b/src/main/fault.c
@@ -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);
}
diff --git a/src/main/fox_save.c b/src/main/fox_save.c
new file mode 100644
index 00000000..f9bb750e
--- /dev/null
+++ b/src/main/fox_save.c
@@ -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;
+}
diff --git a/src/main/joybus.c b/src/main/joybus.c
new file mode 100644
index 00000000..b38c32fa
--- /dev/null
+++ b/src/main/joybus.c
@@ -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;
+ }
+}
diff --git a/src/main/3A80.c b/src/main/lib.c
index e3a5042d..abd23f02 100644
--- a/src/main/3A80.c
+++ b/src/main/lib.c
@@ -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;
+ }
}
diff --git a/src/main/41D0.c b/src/main/lights.c
index e47a7f0f..dc8ae5bf 100644
--- a/src/main/41D0.c
+++ b/src/main/lights.c
@@ -1,6 +1,6 @@
#include "global.h"
-void func_800035D0(Gfx** dList) {
+void Lights_AddLight(Gfx** dList) {
gSPNumLights((*dList)++, 7);
gSPLight((*dList)++, &gLight->l[0], 1);
gSPLight((*dList)++, &gLight->l[1], 2);
@@ -13,8 +13,8 @@ void func_800035D0(Gfx** dList) {
gLight++;
}
-void func_8000372C(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG, s32 colB, s32 ambR, s32 ambG,
- s32 ambB) {
+void Lights_SetOneLight(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG, s32 colB, s32 ambR, s32 ambG,
+ s32 ambB) {
s32 i;
for (i = 0; i < 4; i++) {
@@ -45,11 +45,11 @@ void func_8000372C(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG
gLight->a.l.colc[0] = ambR;
gLight->a.l.colc[1] = ambG;
gLight->a.l.colc[2] = ambB;
- func_800035D0(dList);
+ Lights_AddLight(dList);
}
-void func_800038AC(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) {
+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) {
s32 i;
for (i = 0; i < 4; i++) {
@@ -80,5 +80,5 @@ void func_800038AC(Gfx** dList, s32 dir1x, s32 dir1y, s32 dir1z, s32 dir2x, s32
gLight->a.l.colc[0] = ambR;
gLight->a.l.colc[1] = ambG;
gLight->a.l.colc[2] = ambB;
- func_800035D0(dList);
+ Lights_AddLight(dList);
}
diff --git a/src/main/4650.c b/src/main/main.c
index 7e006830..382fe25c 100644
--- a/src/main/4650.c
+++ b/src/main/main.c
@@ -1,52 +1,52 @@
#include "global.h"
-s32 D_800C45D0 = 1;
+s32 sGammaMode = 1;
-#ifdef IMPORT_DATA_PENDING
u8 gAudioThreadStack[0x1000]; // 800DDAA0
OSThread gGraphicsThread; // 800DEAA0
u8 gGraphicsThreadStack[0x1000]; // 800DEC50
-OSThread gUnkThread3; // 800DFC50
-u8 gUnkThread3Stack[0x1000]; // 800DFE00
+OSThread gTimerThread; // 800DFC50
+u8 gTimerThreadStack[0x1000]; // 800DFE00
OSThread gSerialThread; // 800E0E00
u8 gSerialThreadStack[0x1000]; // 800E0FB0
SPTask* gCurrentTask;
-SPTask* D_800E1FB4[1];
-SPTask* D_800E1FB8[2];
-SPTask* D_800E1FC0[2];
-SPTask* D_800E1FC8[2];
+SPTask* sAudioTasks[1];
+SPTask* sGfxTasks[2];
+SPTask* sNewAudioTasks[1];
+// 0x4 gap here
+SPTask* sNewGfxTasks[2];
u32 gSegments[16]; // 800E1FD0
OSMesgQueue gPiMgrCmdQueue; // 800E2010
OSMesg sPiMgrCmdBuff[50]; // 800E2028
-OSMesgQueue D_800E20F0;
-void* D_800E2108[1];
-OSIoMesg D_800E2110;
+OSMesgQueue gDmaMsgQueue;
+void* sDmaMsgBuff[1];
+OSIoMesg gDmaIOMsg;
OSMesgQueue gSerialEventQueue;
-void* D_800E2140[1];
+void* sSerialEventBuff[1];
OSMesgQueue gMainThreadMsgQueue;
-void* D_800E2160[32];
+void* sMainThreadMsgBuff[32];
OSMesgQueue gTaskMsgQueue;
-void* D_800E21F8[16];
-OSMesgQueue D_800E2238;
-void* D_800E2250[1];
-OSMesgQueue D_800E2258;
-void* D_800E2270[1];
-OSMesgQueue D_800E2278;
-void* D_800E2290[4];
-OSMesgQueue D_800E22A0;
-void* D_800E22B8[2];
+void* sTaskMsgBuff[16];
+OSMesgQueue gAudioVImsgQueue;
+void* sAudioVImsgBuff[1];
+OSMesgQueue gAudioTaskMsgQueue;
+void* sAudioTaskMsgBuff[1];
+OSMesgQueue gGfxVImsgQueue;
+void* sGfxVImsgBuff[4];
+OSMesgQueue gGfxTaskMsgQueue;
+void* sGfxTaskMsgBuff[2];
OSMesgQueue gSerialThreadMsgQueue;
-void* D_800E22D8[8];
-OSMesgQueue D_800E22F8;
-void* D_800E2310[1];
-OSMesgQueue D_800E2318;
-void* D_800E2330[1];
-OSMesgQueue gThread7msgQueue;
-void* D_800E2350[16];
-OSMesgQueue D_800E2390;
-void* D_800E23A8[1];
+void* sSerialThreadMsgBuff[8];
+OSMesgQueue gControllerMsgQueue;
+void* sControllerMsgBuff[1];
+OSMesgQueue gSaveMsgQueue;
+void* sSaveMsgBuff[1];
+OSMesgQueue gTimerTaskMsgQueue;
+void* sTimerTaskMsgBuff[16];
+OSMesgQueue gTimerWaitMsgQueue;
+void* sTimerWaitMsgBuff[1];
GfxPool gGfxPools[2];
@@ -62,12 +62,12 @@ FrameBuffer* gFrameBuffer;
s32* D_80137E74;
u8 D_80137E78;
-u32 D_80137E7C;
-u8 D_80137E80;
-u8 D_80137E81;
+u32 gFrameCounter;
+u8 gStartNMI;
+u8 gStopTasks;
u8 D_80137E84[4];
-u16 D_80137E88;
-u16 D_80137E8A;
+u16 gFillScreenColor;
+u16 gFillScreen;
u8 gUnusedStack[0x1000];
OSThread sIdleThread; // 80138E90
@@ -75,30 +75,29 @@ u8 sIdleThreadStack[0x1000]; // 801390A0
OSThread gMainThread; // 8013A040
u8 sMainThreadStack[0x1000]; // 8013A1F0
OSThread gAudioThread; // 8013B1F0
-#endif
-void func_80003A50(void) {
+void Main_Initialize(void) {
u8 i;
D_80137E78 = 0;
- D_80137E7C = 0;
- D_80137E80 = 0;
- D_80137E81 = 0;
- D_80137E88 = 0;
- D_80137E8A = 0;
+ gFrameCounter = 0;
+ gStartNMI = false;
+ gStopTasks = false;
+ gFillScreenColor = 0;
+ gFillScreen = false;
gCurrentTask = NULL;
- for (i = 0; i < ARRAY_COUNT(D_800E1FB4); i += 1) {
- D_800E1FB4[i] = NULL;
+ for (i = 0; i < ARRAY_COUNT(sAudioTasks); i += 1) {
+ sAudioTasks[i] = NULL;
}
- for (i = 0; i < ARRAY_COUNT(D_800E1FB8); i += 1) {
- D_800E1FB8[i] = NULL;
+ for (i = 0; i < ARRAY_COUNT(sGfxTasks); i += 1) {
+ sGfxTasks[i] = NULL;
}
- for (i = 0; i < 1; i += 1) {
- D_800E1FC0[i] = NULL;
+ for (i = 0; i < ARRAY_COUNT(sNewAudioTasks); i += 1) {
+ sNewAudioTasks[i] = NULL;
}
- for (i = 0; i < ARRAY_COUNT(D_800E1FC8); i += 1) {
- D_800E1FC8[i] = NULL;
+ for (i = 0; i < ARRAY_COUNT(sNewGfxTasks); i += 1) {
+ sNewGfxTasks[i] = NULL;
}
}
@@ -109,7 +108,7 @@ void Audio_ThreadEntry(void* arg0) {
func_8001DCE0();
task = func_8001DF50();
if (task != NULL) {
- task->msgQueue = &D_800E2258;
+ task->msgQueue = &gAudioTaskMsgQueue;
task->msg = (OSMesg) TASK_MESG_1;
osWritebackDCacheAll();
osSendMesg(&gTaskMsgQueue, task, OS_MESG_PRI_NORMAL);
@@ -117,20 +116,20 @@ void Audio_ThreadEntry(void* arg0) {
while (1) {
task = func_8001DF50();
if (task != NULL) {
- task->msgQueue = &D_800E2258;
+ task->msgQueue = &gAudioTaskMsgQueue;
task->msg = (OSMesg) TASK_MESG_1;
osWritebackDCacheAll();
}
- osRecvMesg(&D_800E2258, NULL, OS_MESG_NOBLOCK);
+ osRecvMesg(&gAudioTaskMsgQueue, NULL, OS_MESG_NOBLOCK);
if (task != NULL) {
osSendMesg(&gTaskMsgQueue, task, OS_MESG_PRI_NORMAL);
}
- osRecvMesg(&D_800E2238, NULL, OS_MESG_BLOCK);
+ osRecvMesg(&gAudioVImsgQueue, NULL, OS_MESG_BLOCK);
}
}
-void func_80003C50(void) {
- gGfxTask->msgQueue = &D_800E22A0;
+void Graphics_SetTask(void) {
+ gGfxTask->msgQueue = &gGfxTaskMsgQueue;
gGfxTask->msg = (OSMesg) TASK_MESG_2;
gGfxTask->task.t.type = M_GFXTASK;
gGfxTask->task.t.flags = 0;
@@ -152,8 +151,8 @@ void func_80003C50(void) {
osSendMesg(&gTaskMsgQueue, gGfxTask, OS_MESG_PRI_NORMAL);
}
-void func_80003DC0(u32 arg0) {
- gGfxPool = &gGfxPools[arg0 % 2];
+void Graphics_InitializeTask(u32 frameCount) {
+ gGfxPool = &gGfxPools[frameCount % 2];
gGfxTask = &gGfxPool->task;
gViewport = gGfxPool->viewports;
@@ -163,33 +162,34 @@ void func_80003DC0(u32 arg0) {
gUnkDisp2 = gGfxPool->unkDL2;
gLight = gGfxPool->lights;
- gFrameBuffer = &gFrameBuffers[arg0 % 3];
+ gFrameBuffer = &gFrameBuffers[frameCount % 3];
D_80137E74 = &D_80387800;
- D_8013B3C0 = D_8013B3C8;
- D_8013BBC8 = D_8013BBD0;
+ gGfxMatrix = &sGfxMatrixStack[0];
+ gCalcMatrix = &sCalcMatrixStack[0];
D_80178710 = &D_80178580;
}
-void func_80003EE0(void) {
- if ((D_800DD880[0].button & D_JPAD) && (D_800DD880[1].button & D_JPAD) && (D_800DD880[2].button & D_JPAD) &&
- (D_800DD880[3].button & L_TRIG) && (D_800DD880[3].button & R_TRIG) && (D_800DD880[3].button & Z_TRIG)) {
- D_800C45D0 = 1 - D_800C45D0;
+void Main_SetVIMode(void) {
+ if ((gCurrentInput[0].button & D_JPAD) && (gCurrentInput[1].button & D_JPAD) &&
+ (gCurrentInput[2].button & D_JPAD) && (gCurrentInput[3].button & L_TRIG) &&
+ (gCurrentInput[3].button & R_TRIG) && (gCurrentInput[3].button & Z_TRIG)) {
+ sGammaMode = 1 - sGammaMode;
}
switch (osTvType) {
- case 0:
+ case OS_TV_PAL:
osViSetMode(&osViModePalLan1);
break;
- case 2:
+ case OS_TV_MPAL:
osViSetMode(&osViModeMpalLan1);
break;
default:
- case 1:
+ case OS_TV_NTSC:
osViSetMode(&osViModeNtscLan1);
break;
}
- if (D_800C45D0 != 0) {
+ if (sGammaMode != 0) {
osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON | OS_VI_DIVOT_OFF | OS_VI_GAMMA_ON | OS_VI_GAMMA_DITHER_ON);
} else {
osViSetSpecialFeatures(OS_VI_DITHER_FILTER_ON | OS_VI_DIVOT_OFF | OS_VI_GAMMA_OFF | OS_VI_GAMMA_DITHER_OFF);
@@ -199,33 +199,33 @@ void func_80003EE0(void) {
void SerialInterface_ThreadEntry(void* arg0) {
OSMesg sp34;
- func_8000291C();
+ Controller_Init();
while (1) {
osRecvMesg(&gSerialThreadMsgQueue, &sp34, OS_MESG_BLOCK);
switch ((s32) sp34) {
- case SI_MESG_10:
- func_80002AF4();
+ case SI_READ_CONTROLLER:
+ Controller_ReadData();
break;
- case SI_MESG_11:
- func_80002BE8();
+ case SI_READ_SAVE:
+ Save_ReadData();
break;
- case SI_MESG_12:
- func_80002C50();
+ case SI_WRITE_SAVE:
+ Save_WriteData();
break;
- case SI_MESG_13:
- func_80002CB8();
+ case SI_RUMBLE:
+ Controller_Rumble();
break;
}
}
}
-void Thread7_ThreadEntry(void* arg0) {
+void Timer_ThreadEntry(void* arg0) {
void* sp24;
while (1) {
- osRecvMesg(&gThread7msgQueue, &sp24, OS_MESG_BLOCK);
- func_80007088(sp24);
+ osRecvMesg(&gTimerTaskMsgQueue, &sp24, OS_MESG_BLOCK);
+ Timer_CompleteTask(sp24);
}
}
@@ -235,8 +235,8 @@ void Graphics_ThreadEntry(void* arg0) {
u8 var_v2;
func_800A18B0();
- osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_10, OS_MESG_PRI_NORMAL);
- func_80003DC0(D_80137E7C);
+ osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_PRI_NORMAL);
+ Graphics_InitializeTask(gFrameCounter);
{
gSPSegment(gUnkDisp1++, 0, 0);
gSPDisplayList(gMasterDisp++, gGfxPool->unkDL1);
@@ -247,22 +247,22 @@ void Graphics_ThreadEntry(void* arg0) {
gDPFullSync(gMasterDisp++);
gSPEndDisplayList(gMasterDisp++);
}
- func_80003C50();
+ Graphics_SetTask();
while (1) {
- D_80137E7C++;
- func_80003DC0(D_80137E7C);
- osRecvMesg(&D_800E22F8, NULL, OS_MESG_BLOCK);
- osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_13, OS_MESG_PRI_NORMAL);
- func_800029A8();
- osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_10, OS_MESG_PRI_NORMAL);
- if (D_800DD898[3].button & 0x800) {
- func_80003EE0();
+ gFrameCounter++;
+ Graphics_InitializeTask(gFrameCounter);
+ osRecvMesg(&gControllerMsgQueue, NULL, OS_MESG_BLOCK);
+ osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_RUMBLE, OS_MESG_PRI_NORMAL);
+ Controller_UpdateInput();
+ osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_PRI_NORMAL);
+ if (gChangedInput[3].button & U_JPAD) {
+ Main_SetVIMode();
}
{
gSPSegment(gUnkDisp1++, 0, 0);
gSPDisplayList(gMasterDisp++, gGfxPool->unkDL1);
func_800A26C0();
- if (D_80137E80 == 1) {
+ if (gStartNMI == 1) {
func_800BC4B0();
}
gSPEndDisplayList(gUnkDisp1++);
@@ -271,17 +271,17 @@ void Graphics_ThreadEntry(void* arg0) {
gDPFullSync(gMasterDisp++);
gSPEndDisplayList(gMasterDisp++);
}
- osRecvMesg(&D_800E22A0, NULL, OS_MESG_BLOCK);
- func_80003C50();
- if (D_80137E8A == 0) {
- osViSwapBuffer(&gFrameBuffers[(D_80137E7C - 1) % 3]);
+ osRecvMesg(&gGfxTaskMsgQueue, NULL, OS_MESG_BLOCK);
+ Graphics_SetTask();
+ if (gFillScreen == 0) {
+ osViSwapBuffer(&gFrameBuffers[(gFrameCounter - 1) % 3]);
}
- func_80007FE4(&gFrameBuffers[(D_80137E7C - 1) % 3], 320, 16);
+ func_80007FE4(&gFrameBuffers[(gFrameCounter - 1) % 3], 320, 16);
var_v1 = MIN(D_80137E78, 4);
- var_v2 = MAX(var_v1, D_800E2278.validCount + 1);
+ var_v2 = MAX(var_v1, gGfxVImsgQueue.validCount + 1);
for (i = 0; i < var_v2; i += 1) { // Can't be ++
- osRecvMesg(&D_800E2278, NULL, OS_MESG_BLOCK);
+ osRecvMesg(&gGfxVImsgQueue, NULL, OS_MESG_BLOCK);
}
func_8001DECC();
@@ -289,41 +289,41 @@ void Graphics_ThreadEntry(void* arg0) {
}
void Main_InitMesgQueues(void) {
- osCreateMesgQueue(&D_800E20F0, D_800E2108, ARRAY_COUNT(D_800E2108));
- osCreateMesgQueue(&gTaskMsgQueue, D_800E21F8, ARRAY_COUNT(D_800E21F8));
- osCreateMesgQueue(&D_800E2238, D_800E2250, ARRAY_COUNT(D_800E2250));
- osCreateMesgQueue(&D_800E2258, D_800E2270, ARRAY_COUNT(D_800E2270));
- osCreateMesgQueue(&D_800E2278, D_800E2290, ARRAY_COUNT(D_800E2290));
- osCreateMesgQueue(&D_800E22A0, D_800E22B8, ARRAY_COUNT(D_800E22B8));
- osCreateMesgQueue(&gSerialEventQueue, D_800E2140, ARRAY_COUNT(D_800E2140));
+ osCreateMesgQueue(&gDmaMsgQueue, sDmaMsgBuff, ARRAY_COUNT(sDmaMsgBuff));
+ osCreateMesgQueue(&gTaskMsgQueue, sTaskMsgBuff, ARRAY_COUNT(sTaskMsgBuff));
+ osCreateMesgQueue(&gAudioVImsgQueue, sAudioVImsgBuff, ARRAY_COUNT(sAudioVImsgBuff));
+ osCreateMesgQueue(&gAudioTaskMsgQueue, sAudioTaskMsgBuff, ARRAY_COUNT(sAudioTaskMsgBuff));
+ osCreateMesgQueue(&gGfxVImsgQueue, sGfxVImsgBuff, ARRAY_COUNT(sGfxVImsgBuff));
+ osCreateMesgQueue(&gGfxTaskMsgQueue, sGfxTaskMsgBuff, ARRAY_COUNT(sGfxTaskMsgBuff));
+ osCreateMesgQueue(&gSerialEventQueue, sSerialEventBuff, ARRAY_COUNT(sSerialEventBuff));
osSetEventMesg(OS_EVENT_SI, &gSerialEventQueue, NULL);
- osCreateMesgQueue(&gMainThreadMsgQueue, D_800E2160, ARRAY_COUNT(D_800E2160));
+ osCreateMesgQueue(&gMainThreadMsgQueue, sMainThreadMsgBuff, ARRAY_COUNT(sMainThreadMsgBuff));
osViSetEvent(&gMainThreadMsgQueue, (OSMesg) EVENT_MESG_VI, 1);
osSetEventMesg(OS_EVENT_SP, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_SP);
osSetEventMesg(OS_EVENT_DP, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_DP);
osSetEventMesg(OS_EVENT_PRENMI, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_PRENMI);
- osCreateMesgQueue(&gThread7msgQueue, D_800E2350, ARRAY_COUNT(D_800E2350));
- osCreateMesgQueue(&D_800E2390, D_800E23A8, ARRAY_COUNT(D_800E23A8));
- osCreateMesgQueue(&gSerialThreadMsgQueue, D_800E22D8, ARRAY_COUNT(D_800E22D8));
- osCreateMesgQueue(&D_800E22F8, D_800E2310, ARRAY_COUNT(D_800E2310));
- osCreateMesgQueue(&D_800E2318, D_800E2330, ARRAY_COUNT(D_800E2330));
+ osCreateMesgQueue(&gTimerTaskMsgQueue, sTimerTaskMsgBuff, ARRAY_COUNT(sTimerTaskMsgBuff));
+ osCreateMesgQueue(&gTimerWaitMsgQueue, sTimerWaitMsgBuff, ARRAY_COUNT(sTimerWaitMsgBuff));
+ osCreateMesgQueue(&gSerialThreadMsgQueue, sSerialThreadMsgBuff, ARRAY_COUNT(sSerialThreadMsgBuff));
+ osCreateMesgQueue(&gControllerMsgQueue, sControllerMsgBuff, ARRAY_COUNT(sControllerMsgBuff));
+ osCreateMesgQueue(&gSaveMsgQueue, sSaveMsgBuff, ARRAY_COUNT(sSaveMsgBuff));
}
-void func_80004714(void) {
- SPTask** var_v1 = D_800E1FB8;
+void Main_HandleRDP(void) {
+ SPTask** var_v1 = sGfxTasks;
u8 i;
if ((*var_v1)->msgQueue != NULL) {
osSendMesg((*var_v1)->msgQueue, (*var_v1)->msg, OS_MESG_PRI_NORMAL);
}
(*var_v1)->state = SPTASK_STATE_FINISHED_DP;
- for (i = 0; i < 1; i += 1, var_v1++) {
+ for (i = 0; i < ARRAY_COUNT(sGfxTasks) - 1; i += 1, var_v1++) {
*var_v1 = *(var_v1 + 1);
}
*var_v1 = NULL;
}
-void func_80004798(void) {
+void Main_HandleRSP(void) {
SPTask* task = gCurrentTask;
gCurrentTask = NULL;
@@ -337,12 +337,12 @@ void func_80004798(void) {
if (task->msgQueue != NULL) {
osSendMesg(task->msgQueue, task->msg, OS_MESG_PRI_NORMAL);
}
- D_800E1FB4[0] = NULL;
+ sAudioTasks[0] = NULL;
}
}
}
-void func_80004824(void) {
+void Main_GetNewTasks(void) {
u8 i;
SPTask** var_a0;
SPTask** var_a1;
@@ -351,17 +351,17 @@ void func_80004824(void) {
OSMesg sp40;
SPTask* sp3C;
- var_s0_2 = D_800E1FC0;
- var_s1_2 = D_800E1FC8;
- for (i = 0; i < 1; i += 1) {
+ var_s0_2 = sNewAudioTasks;
+ var_s1_2 = sNewGfxTasks;
+ for (i = 0; i < ARRAY_COUNT(sNewAudioTasks); i += 1) {
*(var_s0_2++) = NULL;
}
- for (i = 0; i < ARRAY_COUNT(D_800E1FC8); i += 1) {
+ for (i = 0; i < ARRAY_COUNT(sNewGfxTasks); i += 1) {
*(var_s1_2++) = NULL;
}
- var_s0_2 = D_800E1FC0;
- var_s1_2 = D_800E1FC8;
+ var_s0_2 = sNewAudioTasks;
+ var_s1_2 = sNewGfxTasks;
while (osRecvMesg(&gTaskMsgQueue, &sp40, OS_MESG_NOBLOCK) != MSG_QUEUE_EMPTY) {
sp3C = (SPTask*) sp40;
sp3C->state = SPTASK_STATE_NOT_STARTED;
@@ -375,44 +375,45 @@ void func_80004824(void) {
break;
}
}
- var_s0_2 = D_800E1FC0;
- var_s1_2 = D_800E1FC8;
- var_a0 = D_800E1FB4;
- var_a1 = D_800E1FB8;
+ var_s0_2 = sNewAudioTasks;
+ var_s1_2 = sNewGfxTasks;
+ var_a0 = sAudioTasks;
+ var_a1 = sGfxTasks;
- for (i = 0; i < 1; i += 1, var_a0++) {
+ for (i = 0; i < ARRAY_COUNT(sAudioTasks); i += 1, var_a0++) {
if (*var_a0 == NULL) {
break;
}
}
- for (i; i < 1; i += 1) {
+ for (i; i < ARRAY_COUNT(sAudioTasks); i += 1) {
*(var_a0++) = *(var_s0_2++);
}
- for (i = 0; i < 2; i += 1, var_a1++) {
+
+ for (i = 0; i < ARRAY_COUNT(sGfxTasks); i += 1, var_a1++) {
if (*var_a1 == NULL) {
break;
}
}
- for (i; i < 2; i += 1) {
+ for (i; i < ARRAY_COUNT(sGfxTasks); i += 1) {
*(var_a1++) = *(var_s1_2++);
}
}
-void func_800049D4(void) {
- if (D_800E1FB4[0] != NULL) {
+void Main_StartNextTask(void) {
+ if (sAudioTasks[0] != NULL) {
if (gCurrentTask != NULL) {
if (gCurrentTask->task.t.type == M_GFXTASK) {
gCurrentTask->state = SPTASK_STATE_INTERRUPTED;
osSpTaskYield();
}
} else {
- gCurrentTask = D_800E1FB4[0];
+ gCurrentTask = sAudioTasks[0];
osSpTaskLoad(&gCurrentTask->task);
osSpTaskStartGo(&gCurrentTask->task);
gCurrentTask->state = SPTASK_STATE_RUNNING;
}
- } else if ((gCurrentTask == NULL) && (D_800E1FB8[0] != NULL) && (D_800E1FB8[0]->state != SPTASK_STATE_FINISHED)) {
- gCurrentTask = D_800E1FB8[0];
+ } else if ((gCurrentTask == NULL) && (sGfxTasks[0] != NULL) && (sGfxTasks[0]->state != SPTASK_STATE_FINISHED)) {
+ gCurrentTask = sGfxTasks[0];
osDpSetStatus(DPC_CLR_TMEM_CTR | DPC_CLR_PIPE_CTR | DPC_CLR_CMD_CTR | DPC_CLR_CLOCK_CTR);
osSpTaskLoad(&gCurrentTask->task);
osSpTaskStartGo(&gCurrentTask->task);
@@ -421,7 +422,7 @@ void func_800049D4(void) {
}
void Main_ThreadEntry(void* arg0) {
- OSMesg sp54;
+ OSMesg osMsg;
u8 mesg;
osCreateThread(&gAudioThread, THREAD_ID_AUDIO, Audio_ThreadEntry, arg0,
@@ -430,9 +431,9 @@ void Main_ThreadEntry(void* arg0) {
osCreateThread(&gGraphicsThread, THREAD_ID_GRAPHICS, Graphics_ThreadEntry, arg0,
gGraphicsThreadStack + sizeof(gGraphicsThreadStack), 40);
osStartThread(&gGraphicsThread);
- osCreateThread(&gUnkThread3, THREAD_ID_7, Thread7_ThreadEntry, arg0, gUnkThread3Stack + sizeof(gUnkThread3Stack),
+ osCreateThread(&gTimerThread, THREAD_ID_7, Timer_ThreadEntry, arg0, gTimerThreadStack + sizeof(gTimerThreadStack),
60);
- osStartThread(&gUnkThread3);
+ osStartThread(&gTimerThread);
osCreateThread(&gSerialThread, THREAD_ID_SERIAL, SerialInterface_ThreadEntry, arg0,
gSerialThreadStack + sizeof(gSerialThreadStack), 20);
osStartThread(&gSerialThread);
@@ -440,35 +441,35 @@ void Main_ThreadEntry(void* arg0) {
Main_InitMesgQueues();
while (true) {
- osRecvMesg(&gMainThreadMsgQueue, &sp54, OS_MESG_BLOCK);
- mesg = (u32) sp54;
+ osRecvMesg(&gMainThreadMsgQueue, &osMsg, OS_MESG_BLOCK);
+ mesg = (u32) osMsg;
switch (mesg) {
case EVENT_MESG_VI:
- osSendMesg(&D_800E2238, (OSMesg) EVENT_MESG_VI, OS_MESG_PRI_NORMAL);
- osSendMesg(&D_800E2278, (OSMesg) EVENT_MESG_VI, OS_MESG_PRI_NORMAL);
- func_80004824();
+ osSendMesg(&gAudioVImsgQueue, (OSMesg) EVENT_MESG_VI, OS_MESG_PRI_NORMAL);
+ osSendMesg(&gGfxVImsgQueue, (OSMesg) EVENT_MESG_VI, OS_MESG_PRI_NORMAL);
+ Main_GetNewTasks();
break;
case EVENT_MESG_SP:
- func_80004798();
+ Main_HandleRSP();
break;
case EVENT_MESG_DP:
- func_80004714();
+ Main_HandleRDP();
break;
case EVENT_MESG_PRENMI:
- D_80137E80 = 1;
+ gStartNMI = 1;
break;
}
- if (D_80137E81 == 0) {
- func_800049D4();
+ if (gStopTasks == 0) {
+ Main_StartNextTask();
}
}
}
void Idle_ThreadEntry(void* arg0) {
osCreateViManager(OS_PRIORITY_VIMGR);
- func_80003EE0();
- func_800034E8(1);
+ Main_SetVIMode();
+ Lib_FillScreen(1);
osCreatePiMgr(OS_PRIORITY_PIMGR, &gPiMgrCmdQueue, sPiMgrCmdBuff, ARRAY_COUNT(sPiMgrCmdBuff));
osCreateThread(&gMainThread, THREAD_ID_MAIN, &Main_ThreadEntry, arg0, sMainThreadStack + sizeof(sMainThreadStack),
100);
@@ -482,7 +483,7 @@ loop_1:
void bootproc(void) {
RdRam_CheckIPL3();
osInitialize();
- func_80003A50();
+ Main_Initialize();
osCreateThread(&sIdleThread, THREAD_ID_IDLE, &Idle_ThreadEntry, NULL, sIdleThreadStack + sizeof(sIdleThreadStack),
255);
osStartThread(&sIdleThread);
diff --git a/src/main/math.c b/src/main/math.c
index 1a9c49c4..58f50661 100644
--- a/src/main/math.c
+++ b/src/main/math.c
@@ -1,42 +1,43 @@
#include "global.h"
-extern s32 D_8013B3A0;
-extern s32 D_8013B3A4;
-extern s32 D_8013B3A8;
-extern s32 D_8013B3AC;
-extern s32 D_8013B3B0;
-extern s32 D_8013B3B4;
+s32 sSeededRandSeed3;
+s32 sRandSeed1;
+s32 sRandSeed2;
+s32 sRandSeed3;
+s32 sSeededRandSeed1;
+s32 sSeededRandSeed2;
f32 Math_ModF(f32 value, f32 mod) {
return value - ((s32) (value / mod) * mod);
}
void Rand_Init(void) {
- D_8013B3A4 = (s32) osGetTime() % 30000;
- D_8013B3A8 = (s32) osGetTime() % 30000;
- D_8013B3AC = (s32) osGetTime() % 30000;
+ sRandSeed1 = (s32) osGetTime() % 30000;
+ sRandSeed2 = (s32) osGetTime() % 30000;
+ sRandSeed3 = (s32) osGetTime() % 30000;
}
f32 Rand_ZeroOne(void) {
- D_8013B3A4 = (D_8013B3A4 * 171) % 30269;
- D_8013B3A8 = (D_8013B3A8 * 172) % 30307;
- D_8013B3AC = (D_8013B3AC * 170) % 30323;
+ sRandSeed1 = (sRandSeed1 * 171) % 30269;
+ sRandSeed2 = (sRandSeed2 * 172) % 30307;
+ sRandSeed3 = (sRandSeed3 * 170) % 30323;
- return fabsf(Math_ModF((D_8013B3A4 / 30269.0f) + (D_8013B3A8 / 30307.0f) + (D_8013B3AC / 30323.0f), 1.0f));
+ return fabsf(Math_ModF((sRandSeed1 / 30269.0f) + (sRandSeed2 / 30307.0f) + (sRandSeed3 / 30323.0f), 1.0f));
}
void Rand_SetSeed(s32 seed1, s32 seed2, s32 seed3) {
- D_8013B3B0 = seed1;
- D_8013B3B4 = seed2;
- D_8013B3A0 = seed3;
+ sSeededRandSeed1 = seed1;
+ sSeededRandSeed2 = seed2;
+ sSeededRandSeed3 = seed3;
}
f32 Rand_ZeroOneSeeded(void) {
- D_8013B3B0 = (D_8013B3B0 * 171) % 30269;
- D_8013B3B4 = (D_8013B3B4 * 172) % 30307;
- D_8013B3A0 = (D_8013B3A0 * 170) % 30323;
+ sSeededRandSeed1 = (sSeededRandSeed1 * 171) % 30269;
+ sSeededRandSeed2 = (sSeededRandSeed2 * 172) % 30307;
+ sSeededRandSeed3 = (sSeededRandSeed3 * 170) % 30323;
- return fabsf(Math_ModF((D_8013B3B0 / 30269.0f) + (D_8013B3B4 / 30307.0f) + (D_8013B3A0 / 30323.0f), 1.0f));
+ return fabsf(
+ Math_ModF((sSeededRandSeed1 / 30269.0f) + (sSeededRandSeed2 / 30307.0f) + (sSeededRandSeed3 / 30323.0f), 1.0f));
}
f32 Math_Atan2F(f32 y, f32 x) {
diff --git a/src/main/matrix.c b/src/main/matrix.c
index 91355453..e8158b2a 100644
--- a/src/main/matrix.c
+++ b/src/main/matrix.c
@@ -14,12 +14,10 @@ Matrix gIdentityMatrix = { {
{ 0.0f, 0.0f, 0.0f, 1.0f },
} };
-#ifdef DATA_IMPORT_PENDING
-Matrix* D_8013B3C0;
-Matrix D_8013B3C8[0x20];
-Matrix* D_8013BBC8;
-Matrix D_8013BBD0[0x20];
-#endif
+Matrix* gGfxMatrix;
+Matrix sGfxMatrixStack[0x20];
+Matrix* gCalcMatrix;
+Matrix sCalcMatrixStack[0x20];
void Matrix_Copy(Matrix* dst, Matrix* src) {
dst->m[0][0] = src->m[0][0];
@@ -387,12 +385,11 @@ void Matrix_RotateAxis(Matrix* mtx, f32 angle, f32 axisX, f32 axisY, f32 axisZ,
}
}
-// Matrix_ToMtx
void Matrix_ToMtx(Mtx* dest) {
s32 temp;
u16* m1 = (u16*) &dest->m[0][0];
u16* m2 = (u16*) &dest->m[2][0];
- Matrix* src = D_8013B3C0;
+ Matrix* src = gGfxMatrix;
temp = src->xx * 0x10000;
m1[0] = (temp >> 0x10);
@@ -459,7 +456,6 @@ void Matrix_ToMtx(Mtx* dest) {
m2[15] = temp & 0xFFFF;
}
-// Matrix_FromMtx
void Matrix_FromMtx(Mtx* src, Matrix* dest) {
u16* m1 = (u16*) &src->m[0][0];
u16* m2 = (u16*) &src->m[2][0];
@@ -482,14 +478,12 @@ void Matrix_FromMtx(Mtx* src, Matrix* dest) {
dest->ww = ((m1[15] << 0x10) | m2[15]) * (1 / 65536.0f);
}
-// Matrix_MultVec3f
void Matrix_MultVec3f(Matrix* mtx, Vec3f* src, Vec3f* dest) {
dest->x = (mtx->m[0][0] * src->x) + (mtx->m[1][0] * src->y) + (mtx->m[2][0] * src->z) + mtx->m[3][0];
dest->y = (mtx->m[0][1] * src->x) + (mtx->m[1][1] * src->y) + (mtx->m[2][1] * src->z) + mtx->m[3][1];
dest->z = (mtx->m[0][2] * src->x) + (mtx->m[1][2] * src->y) + (mtx->m[2][2] * src->z) + mtx->m[3][2];
}
-// Matrix_MultVec3fLinear ?
void Matrix_MultVec3fNoTranslate(Matrix* mtx, Vec3f* src, Vec3f* dest) {
dest->x = (mtx->m[0][0] * src->x) + (mtx->m[1][0] * src->y) + (mtx->m[2][0] * src->z);
dest->y = (mtx->m[0][1] * src->x) + (mtx->m[1][1] * src->y) + (mtx->m[2][1] * src->z);
diff --git a/src/main/memory.c b/src/main/memory.c
new file mode 100644
index 00000000..c83fbbee
--- /dev/null
+++ b/src/main/memory.c
@@ -0,0 +1,15 @@
+#include "global.h"
+
+s32 sMemoryBuffer[0x2200];
+s32* sMemoryPtr;
+
+void Memory_FreeAll(void) {
+ sMemoryPtr = sMemoryBuffer;
+}
+
+void* Memory_Allocate(s32 size) {
+ void* addr = sMemoryPtr;
+
+ sMemoryPtr = (void*) (((size + 0xF) & ~0xF) + (uintptr_t) sMemoryPtr);
+ return addr;
+}
diff --git a/src/main/7D30.c b/src/main/save.c
index af8e5f9d..20ce9136 100644
--- a/src/main/7D30.c
+++ b/src/main/save.c
@@ -2,12 +2,10 @@
#include "global.h"
-#ifdef DATA_IMPORT_PENDING
-SaveFile D_80144F60;
-SaveFile D_80145160;
-#endif
+SaveFile gSaveIOBuffer;
+SaveFile sPrevSaveData;
-s32 func_80007130(s32 arg0, u8* arg1) {
+s32 Save_ReadBlock(s32 arg0, u8* arg1) {
if (osEepromRead(&gSerialEventQueue, arg0, arg1)) {
(void) "EEPROM インターフェース回路反応なし (READ)\n";
return -1;
@@ -16,17 +14,17 @@ s32 func_80007130(s32 arg0, u8* arg1) {
return 0;
}
-s32 func_8000716C(s32 arg0, u8* arg1) {
+s32 Save_WriteBlock(s32 arg0, u8* arg1) {
if (osEepromWrite(&gSerialEventQueue, arg0, arg1)) {
(void) "EEPROM インターフェース回路反応なし (WRITE)\n";
return -1;
}
- func_800070C8(MSEC_TO_CYCLES(15));
+ Timer_Wait(MSEC_TO_CYCLES(15));
(void) "EEPROM WRITE %02X: %02X %02X %02X %02X %02X %02X %02X %02X\n";
return 0;
}
-s32 func_800071FC(SaveFile* arg0) {
+s32 Save_WriteEeprom(SaveFile* arg0) {
s32 var_a2;
s32 i;
s32 j;
@@ -38,19 +36,19 @@ s32 func_800071FC(SaveFile* arg0) {
for (i = 0; i < EEPROM_MAXBLOCKS; i++) {
var_a2 = 0;
for (j = 0; j < EEPROM_BLOCK_SIZE; j++) {
- if (D_80145160.raw[EEPROM_BLOCK_SIZE * i + j] != arg0->raw[EEPROM_BLOCK_SIZE * i + j]) {
- D_80145160.raw[EEPROM_BLOCK_SIZE * i + j] = arg0->raw[EEPROM_BLOCK_SIZE * i + j];
+ if (((char*) &sPrevSaveData)[EEPROM_BLOCK_SIZE * i + j] != ((char*) arg0)[EEPROM_BLOCK_SIZE * i + j]) {
+ ((char*) &sPrevSaveData)[EEPROM_BLOCK_SIZE * i + j] = ((char*) arg0)[EEPROM_BLOCK_SIZE * i + j];
var_a2 = 1;
}
}
- if ((var_a2 == 1) && func_8000716C(i, &arg0->raw[EEPROM_BLOCK_SIZE * i])) {
+ if ((var_a2 == 1) && Save_WriteBlock(i, &((char*) arg0)[EEPROM_BLOCK_SIZE * i])) {
return -1;
}
}
return 0;
}
-s32 func_800072E0(SaveFile* arg0) {
+s32 Save_ReadEeprom(SaveFile* arg0) {
s32 i;
if (osEepromProbe(&gSerialEventQueue) != 1) {
@@ -58,10 +56,10 @@ s32 func_800072E0(SaveFile* arg0) {
return -1;
}
for (i = 0; i < EEPROM_MAXBLOCKS; i++) {
- if (func_80007130(i, &arg0->raw[EEPROM_BLOCK_SIZE * i]) != 0) {
+ if (Save_ReadBlock(i, &((char*) arg0)[EEPROM_BLOCK_SIZE * i]) != 0) {
return -1;
}
}
- D_80145160 = *arg0;
+ sPrevSaveData = *arg0;
return 0;
}
diff --git a/src/main/sf_59780.c b/src/main/sf_59780.c
index 0f0adade..fba7cfbe 100644
--- a/src/main/sf_59780.c
+++ b/src/main/sf_59780.c
@@ -11,12 +11,12 @@ void func_80058B80(void* arg0, void* arg1, ptrdiff_t arg2) {
for (i = 0; gDmaTable[i].pRom.end != NULL; i++) {
if (gDmaTable[i].vRomAddress == arg0) {
if (gDmaTable[i].compFlag == 0) {
- func_800033E0(gDmaTable[i].pRom.start, arg1, arg2);
+ Lib_DmaRead(gDmaTable[i].pRom.start, arg1, arg2);
} else {
- func_800034E8(1);
+ Lib_FillScreen(1);
D_800CA3B0 = 3;
D_80161A39 = 1;
- func_800033E0(gDmaTable[i].pRom.start, gFrameBuffers, SEGMENT_SIZE(gDmaTable[i].pRom));
+ Lib_DmaRead(gDmaTable[i].pRom.start, gFrameBuffers, SEGMENT_SIZE(gDmaTable[i].pRom));
Mio0_Decompress(gFrameBuffers, arg1);
}
break;
@@ -65,8 +65,8 @@ u8 func_80058C48(OverlayInit* ovlInit) {
if (D_800CA3B0 != 0) {
D_800CA3B0--;
- } else if (D_80137E80 == 0) {
- func_800034E8(0);
+ } else if (gStartNMI == 0) {
+ Lib_FillScreen(0);
}
return startLoad;
}
@@ -179,6 +179,6 @@ extern u8 D_DEA20[];
extern u8 D_DF4260[];
void func_80059498(void) {
- func_800033E0(D_DE480, gDmaTable, D_DEA20 - D_DE480);
+ Lib_DmaRead(D_DE480, gDmaTable, D_DEA20 - D_DE480);
func_80058B80(D_DE5D50, D_80179010, D_DF4260 - D_DE5D50);
}
diff --git a/src/main/sf_5A0F0.c b/src/main/sf_5A0F0.c
index ff75c39b..85fc9b18 100644
--- a/src/main/sf_5A0F0.c
+++ b/src/main/sf_5A0F0.c
@@ -2,7 +2,7 @@
void func_800594F0(Object_80* arg0) {
func_800B9EB0(D_80178320, D_80178328, D_80178330, D_80178338, D_801783D8, D_801783DC);
- Matrix_RotateY(D_8013B3C0, M_PI, 1);
+ Matrix_RotateY(gGfxMatrix, M_PI, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6007D90);
func_800BA1D0(D_80178320, D_80178328, D_80178330, D_80178338, D_801783D8, D_801783DC);
@@ -10,7 +10,7 @@ void func_800594F0(Object_80* arg0) {
void func_800595D0(Object_80* arg0) {
func_800B9EB0(D_80178320, D_80178328, D_80178330, D_80178338, D_801783D8, D_801783DC);
- Matrix_RotateY(D_8013B3C0, M_PI, 1);
+ Matrix_RotateY(gGfxMatrix, M_PI, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6007CF0);
func_800BA1D0(D_80178320, D_80178328, D_80178330, D_80178338, D_801783D8, D_801783DC);
diff --git a/src/main/sf_5A2C0.c b/src/main/sf_5A2C0.c
index f1d63533..09839729 100644
--- a/src/main/sf_5A2C0.c
+++ b/src/main/sf_5A2C0.c
@@ -1,10 +1,10 @@
#include "global.h"
void func_800596C0(void) {
- Matrix_RotateZ(D_8013B3C0, D_80177DB0 * 13.0f * M_DTOR, 1);
- Matrix_Scale(D_8013B3C0, 1.02f, 0.98f, 1.0f, 1);
- Matrix_RotateZ(D_8013B3C0, -(f32) D_80177DB0 * 13.0f * M_DTOR, 1);
- Matrix_Scale(D_8013B3C0, 1.02f, 0.98f, 1.0f, 1);
+ Matrix_RotateZ(gGfxMatrix, D_80177DB0 * 13.0f * M_DTOR, 1);
+ Matrix_Scale(gGfxMatrix, 1.02f, 0.98f, 1.0f, 1);
+ Matrix_RotateZ(gGfxMatrix, -(f32) D_80177DB0 * 13.0f * M_DTOR, 1);
+ Matrix_Scale(gGfxMatrix, 1.02f, 0.98f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
}
@@ -16,7 +16,7 @@ void func_800597C0(s32 arg0) {
}
void func_8005980C(f32 arg0) {
- Matrix_Scale(D_8013B3C0, arg0, arg0, arg0, 1);
+ Matrix_Scale(gGfxMatrix, arg0, arg0, arg0, 1);
Matrix_SetGfxMtx(&gMasterDisp);
}
@@ -43,7 +43,7 @@ void func_800599A4(s32 arg0, Vec3f* arg1, s32* arg2) {
sp24.x = 0.0f;
sp24.y = 0.0f;
sp24.z = 0.0f;
- Matrix_MultVec3f(D_8013BBC8, &sp24, &sp18);
+ Matrix_MultVec3f(gCalcMatrix, &sp24, &sp18);
D_80163FE0[*arg2].unk_114 = sp18.y;
}
}
@@ -52,7 +52,7 @@ void func_80059A24(Object_2F4* arg0) {
Vec3f sp30[30];
f32 temp = D_800CF9B0[arg0->unk_0B6] - 114.0f;
- Matrix_Translate(D_8013B3C0, 0.f, -temp, 0.0f, 1);
+ Matrix_Translate(gGfxMatrix, 0.f, -temp, 0.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
func_8009AA20(&D_601E8C4, arg0->unk_0B6, sp30);
func_8009A72C(1, &D_601E9D0, sp30, NULL, func_800599A4, &arg0->unk_040, &gIdentityMatrix);
@@ -95,33 +95,33 @@ void func_80059C40(Object_4C* arg0) {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 180);
switch (arg0->unk_45) {
case 0x0:
- Matrix_Scale(D_8013B3C0, 2.0f, 1.0f, 0.7f, 1);
+ Matrix_Scale(gGfxMatrix, 2.0f, 1.0f, 0.7f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6034B90);
break;
case 0x15:
- Matrix_Scale(D_8013B3C0, 1.0f, 1.0f, 0.7f, 1);
+ Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.7f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6034B90);
break;
case 0x6:
case 0x7:
- Matrix_Scale(D_8013B3C0, 1.0f, 1.0f, 10.55f, 1);
+ Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 10.55f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_Gfx_800DAC20);
break;
case 0x38:
- Matrix_Scale(D_8013B3C0, 1.6f, 1.0f, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, 1.6f, 1.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6034B90);
break;
case 0x14:
- Matrix_Scale(D_8013B3C0, 1.2f, 1.0f, 1.3f, 1);
+ Matrix_Scale(gGfxMatrix, 1.2f, 1.0f, 1.3f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6034B90);
break;
case 0x16:
- Matrix_Scale(D_8013B3C0, 2.2f, 1.0f, 1.4f, 1);
+ Matrix_Scale(gGfxMatrix, 2.2f, 1.0f, 1.4f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6034B90);
break;
@@ -130,7 +130,7 @@ void func_80059C40(Object_4C* arg0) {
}
void func_80059F68(Object_6C* arg0) {
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, -95.0f, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -95.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_602DA20);
}
@@ -141,7 +141,7 @@ void func_80059FDC(Object_6C* arg0) {
void func_8005A010(Object_4C* arg0) {
if (arg0->unk_48 == 0) {
- Matrix_RotateY(D_8013B3C0, M_PI / 2.0f, 1);
+ Matrix_RotateY(gGfxMatrix, M_PI / 2.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_60361F0);
}
@@ -156,14 +156,14 @@ void func_8005A088(void* arg0) {
void func_8005A094(Object_2F4* arg0) {
switch (arg0->unk_0B8) {
case 0:
- Matrix_Translate(D_8013B3C0, 18.0f, 15.0f, -15.0f, 1);
- Matrix_RotateY(D_8013B3C0, M_PI, 1U);
+ Matrix_Translate(gGfxMatrix, 18.0f, 15.0f, -15.0f, 1);
+ Matrix_RotateY(gGfxMatrix, M_PI, 1U);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_3016660);
break;
case 1:
- Matrix_Translate(D_8013B3C0, -18.0f, 15.0f, -15.0f, 1);
- Matrix_RotateY(D_8013B3C0, M_PI, 1U);
+ Matrix_Translate(gGfxMatrix, -18.0f, 15.0f, -15.0f, 1);
+ Matrix_RotateY(gGfxMatrix, M_PI, 1U);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_3015D80);
break;
@@ -355,17 +355,17 @@ void func_8005ADAC(Object_2F4* arg0) {
if (D_80177DB0 & 1) {
sp5C *= 1.111f;
}
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, -60.0f, 1);
- Matrix_Scale(D_8013B3C0, sp5C, sp5C * 0.7f, sp5C, 1);
- Matrix_RotateZ(D_8013B3C0, -arg0->obj.rot.z * M_DTOR, 1U);
- Matrix_RotateX(D_8013B3C0, -arg0->obj.rot.x * M_DTOR, 1U);
- Matrix_RotateY(D_8013B3C0, -arg0->obj.rot.y * M_DTOR, 1U);
- Matrix_RotateY(D_8013B3C0, -D_80178280[D_801778A0].unk_058, 1U);
- Matrix_RotateX(D_8013B3C0, D_80178280[D_801778A0].unk_05C, 1U);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -60.0f, 1);
+ Matrix_Scale(gGfxMatrix, sp5C, sp5C * 0.7f, sp5C, 1);
+ Matrix_RotateZ(gGfxMatrix, -arg0->obj.rot.z * M_DTOR, 1U);
+ Matrix_RotateX(gGfxMatrix, -arg0->obj.rot.x * M_DTOR, 1U);
+ Matrix_RotateY(gGfxMatrix, -arg0->obj.rot.y * M_DTOR, 1U);
+ Matrix_RotateY(gGfxMatrix, -D_80178280[D_801778A0].unk_058, 1U);
+ Matrix_RotateX(gGfxMatrix, D_80178280[D_801778A0].unk_05C, 1U);
Matrix_SetGfxMtx(&gMasterDisp);
func_8005465C(D_80177C98);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
sp5C = arg0->unk_168;
if ((sp5C != 0.0f) && (D_80177C98 == 0)) {
@@ -375,24 +375,24 @@ void func_8005ADAC(Object_2F4* arg0) {
}
func_800BA170();
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 100);
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, 70.0f, -10.0f, -100.0f, 1);
- Matrix_Scale(D_8013B3C0, sp5C, 1.0f, 50.0f, 1);
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, -17.5f, 1);
- Matrix_RotateX(D_8013B3C0, M_PI / 2.0f, 1);
- Matrix_RotateY(D_8013B3C0, M_DTOR * sp54, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, 70.0f, -10.0f, -100.0f, 1);
+ Matrix_Scale(gGfxMatrix, sp5C, 1.0f, 50.0f, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -17.5f, 1);
+ Matrix_RotateX(gGfxMatrix, M_PI / 2.0f, 1);
+ Matrix_RotateY(gGfxMatrix, M_DTOR * sp54, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_102A8A0);
- Matrix_Pop(&D_8013B3C0);
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, -70.0f, -10.0f, -100.0f, 1);
- Matrix_Scale(D_8013B3C0, sp5C, 1.0f, 50.0f, 1);
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, -17.5f, 1);
- Matrix_RotateX(D_8013B3C0, M_PI / 2.0f, 1);
- Matrix_RotateY(D_8013B3C0, M_DTOR * sp54, 1);
+ Matrix_Pop(&gGfxMatrix);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, -70.0f, -10.0f, -100.0f, 1);
+ Matrix_Scale(gGfxMatrix, sp5C, 1.0f, 50.0f, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -17.5f, 1);
+ Matrix_RotateX(gGfxMatrix, M_PI / 2.0f, 1);
+ Matrix_RotateY(gGfxMatrix, M_DTOR * sp54, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_102A8A0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
@@ -407,15 +407,15 @@ void func_8005B1E8(Object_2F4* arg0, s32 arg1) {
if (D_80177DB0 & 1) {
var_fv0 *= 1.2f;
}
- Matrix_Push(&D_8013B3C0);
- Matrix_Scale(D_8013B3C0, var_fv0, var_fv0, var_fv0, 1);
- Matrix_RotateZ(D_8013B3C0, -arg0->obj.rot.z * M_DTOR, 1);
- Matrix_RotateX(D_8013B3C0, -arg0->obj.rot.x * M_DTOR, 1);
- Matrix_RotateY(D_8013B3C0, -arg0->obj.rot.y * M_DTOR, 1);
- Matrix_RotateY(D_8013B3C0, -D_80178280[D_801778A0].unk_058, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Scale(gGfxMatrix, var_fv0, var_fv0, var_fv0, 1);
+ Matrix_RotateZ(gGfxMatrix, -arg0->obj.rot.z * M_DTOR, 1);
+ Matrix_RotateX(gGfxMatrix, -arg0->obj.rot.x * M_DTOR, 1);
+ Matrix_RotateY(gGfxMatrix, -arg0->obj.rot.y * M_DTOR, 1);
+ Matrix_RotateY(gGfxMatrix, -D_80178280[D_801778A0].unk_058, 1);
Matrix_SetGfxMtx(&gMasterDisp);
func_8005465C(arg1);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
@@ -424,7 +424,7 @@ void func_8005B388(Object_2F4* arg0) {
Vec3f sp3C = D_800CFCC0;
Vec3f sp30;
- Matrix_MultVec3f(D_8013B3C0, &sp3C, &sp30);
+ Matrix_MultVec3f(gGfxMatrix, &sp3C, &sp30);
if ((((fabsf(sp30.z) < 3000.0f) && (fabsf(sp30.x) < 3000.0f) && (D_80178284 == 0)) ||
(D_80178280[0].unk_1C8 == 0) || (D_80178234 == 9) || (D_80178234 == 0x13) || (D_80178280[0].unk_1C8 == 7)) &&
(D_80178234 != 0xB) && (D_80178234 != 0xC)) {
@@ -470,14 +470,14 @@ void func_8005B388(Object_2F4*);
#endif
void func_8005B6A4(Object_2F4* arg0) {
- Matrix_Scale(D_8013B3C0, 1.0f, 1.0f, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6024B60);
}
void func_8005B71C(Object_2F4* arg0) {
func_800BA1D0(arg0->unk_046, D_80178328, D_80178330, D_80178338, arg0->unk_048, D_801783DC);
- Matrix_Scale(D_8013B3C0, 0.5f, 0.5f, 0.5f, 1);
+ Matrix_Scale(gGfxMatrix, 0.5f, 0.5f, 0.5f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6018C00);
}
@@ -506,14 +506,14 @@ void func_8005B848(Object_2F4* arg0) {
if (D_80177DB0 & 1) {
var_fv0 = 1.7f;
}
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, -60.0f, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -60.0f, 1);
arg0->unk_07C = 1;
- Matrix_Scale(D_8013B3C0, var_fv0, var_fv0, var_fv0, 1);
+ Matrix_Scale(gGfxMatrix, var_fv0, var_fv0, var_fv0, 1);
func_8005B1E8(arg0, 2);
}
void func_8005B9A4(Object_2F4* arg0) {
- Matrix_Translate(D_8013B3C0, 0.0f, -124.0f, 0.0f, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, -124.0f, 0.0f, 1);
func_8009AA20(D_6029528, arg0->unk_0B6, &arg0->unk_18C);
func_8009A72C(1, &D_6029674, &arg0->unk_18C, NULL, NULL, (s32*) arg0, &gIdentityMatrix);
}
@@ -537,8 +537,8 @@ void func_8005BAB4(s32 arg0, s32 arg1) {
switch (arg0) {
case 0x176:
if (D_80170130[arg1].unk_4E == 0) {
- Matrix_Scale(D_8013B3C0, 1.2f, 0.0f, 1.2f, 1);
- Matrix_RotateX(D_8013B3C0, M_PI / 2.0f, 1);
+ Matrix_Scale(gGfxMatrix, 1.2f, 0.0f, 1.2f, 1);
+ Matrix_RotateX(gGfxMatrix, M_PI / 2.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_102A8A0);
}
@@ -549,8 +549,8 @@ void func_8005BAB4(s32 arg0, s32 arg1) {
case 0xC8:
switch (D_80163FE0[arg1].unk_0B4) {
case 0x3:
- Matrix_Scale(D_8013B3C0, 2.3f, 0.0f, 2.3f, 1);
- Matrix_RotateX(D_8013B3C0, M_PI / 2.0f, 1);
+ Matrix_Scale(gGfxMatrix, 2.3f, 0.0f, 2.3f, 1);
+ Matrix_RotateX(gGfxMatrix, M_PI / 2.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_102A010);
break;
@@ -559,17 +559,17 @@ void func_8005BAB4(s32 arg0, s32 arg1) {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255);
gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 255);
temp_fv0 = D_80163FE0[arg1].unk_150 * 3.0f;
- Matrix_Scale(D_8013B3C0, temp_fv0, temp_fv0, temp_fv0, 1);
- Matrix_RotateX(D_8013B3C0, -M_PI / 2.0f, 1);
+ Matrix_Scale(gGfxMatrix, temp_fv0, temp_fv0, temp_fv0, 1);
+ Matrix_RotateX(gGfxMatrix, -M_PI / 2.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1024AC0);
break;
default:
temp1 = D_800CFCCC[D_80177DB0 % 8U];
temp2 = D_800CFCCC[(D_80177DB0 + 4) % 8U];
- Matrix_Scale(D_8013B3C0, 1.4f + temp1, 0.0f, 1.4f + temp2, 1);
- Matrix_RotateY(D_8013B3C0, M_PI, 1);
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, 30.0f, 1);
+ Matrix_Scale(gGfxMatrix, 1.4f + temp1, 0.0f, 1.4f + temp2, 1);
+ Matrix_RotateY(gGfxMatrix, M_PI, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 30.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK);
gSPDisplayList(gMasterDisp++, D_1032780);
@@ -584,7 +584,7 @@ void func_8005BAB4(s32 arg0, s32 arg1) {
func_800B8DD0(&gMasterDisp, 0x40);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 200);
}
- Matrix_RotateX(D_8013B3C0, M_PI / 2.0f, 1);
+ Matrix_RotateX(gGfxMatrix, M_PI / 2.0f, 1);
func_8005980C(150.0f);
gSPDisplayList(gMasterDisp++, D_102A8A0);
break;
@@ -613,7 +613,7 @@ void func_8005BAB4(s32 arg0, s32 arg1) {
break;
case 0xC0:
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 150);
- Matrix_Scale(D_8013B3C0, 0.4f, 0.4f, D_80163FE0[arg1].unk_110, 1);
+ Matrix_Scale(gGfxMatrix, 0.4f, 0.4f, D_80163FE0[arg1].unk_110, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6034B90);
break;
@@ -623,10 +623,10 @@ void func_8005BAB4(s32 arg0, s32 arg1) {
gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255);
gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 0);
- Matrix_RotateX(D_8013B3C0, D_80163FE0[arg1].unk_114, 1);
- Matrix_RotateZ(D_8013B3C0, D_80163FE0[arg1].unk_11C, 1);
- Matrix_Scale(D_8013B3C0, D_80163FE0[arg1].unk_110, 1.0f, D_80163FE0[arg1].unk_110, 1);
- Matrix_RotateX(D_8013B3C0, -M_PI / 2.0f, 1);
+ Matrix_RotateX(gGfxMatrix, D_80163FE0[arg1].unk_114, 1);
+ Matrix_RotateZ(gGfxMatrix, D_80163FE0[arg1].unk_11C, 1);
+ Matrix_Scale(gGfxMatrix, D_80163FE0[arg1].unk_110, 1.0f, D_80163FE0[arg1].unk_110, 1);
+ Matrix_RotateX(gGfxMatrix, -M_PI / 2.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1024AC0);
break;
@@ -635,12 +635,12 @@ void func_8005BAB4(s32 arg0, s32 arg1) {
gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255);
gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 0);
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, 120.0f, 1);
- Matrix_RotateX(D_8013B3C0, D_80163FE0[arg1].unk_118 * M_DTOR, 1);
- Matrix_RotateZ(D_8013B3C0, D_80163FE0[arg1].unk_11C * M_DTOR, 1);
- Matrix_RotateY(D_8013B3C0, D_80163FE0[arg1].obj.rot.y * M_DTOR, 1);
- Matrix_Scale(D_8013B3C0, 6.0f, 1.0f, 7.5f, 1);
- Matrix_RotateX(D_8013B3C0, -M_PI / 2.0f, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 120.0f, 1);
+ Matrix_RotateX(gGfxMatrix, D_80163FE0[arg1].unk_118 * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, D_80163FE0[arg1].unk_11C * M_DTOR, 1);
+ Matrix_RotateY(gGfxMatrix, D_80163FE0[arg1].obj.rot.y * M_DTOR, 1);
+ Matrix_Scale(gGfxMatrix, 6.0f, 1.0f, 7.5f, 1);
+ Matrix_RotateX(gGfxMatrix, -M_PI / 2.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1024AC0);
break;
@@ -648,11 +648,11 @@ void func_8005BAB4(s32 arg0, s32 arg1) {
func_800B8DD0(&gMasterDisp, 0x45);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255);
gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 0);
- Matrix_RotateX(D_8013B3C0, D_80163FE0[arg1].unk_118, 1);
- Matrix_RotateZ(D_8013B3C0, D_80163FE0[arg1].unk_11C, 1);
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, 0.0f, 1);
- Matrix_Scale(D_8013B3C0, 1.2f, 1.0f, 1.2f, 1);
- Matrix_RotateX(D_8013B3C0, -M_PI / 2.0f, 1U);
+ Matrix_RotateX(gGfxMatrix, D_80163FE0[arg1].unk_118, 1);
+ Matrix_RotateZ(gGfxMatrix, D_80163FE0[arg1].unk_11C, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 0.0f, 1);
+ Matrix_Scale(gGfxMatrix, 1.2f, 1.0f, 1.2f, 1);
+ Matrix_RotateX(gGfxMatrix, -M_PI / 2.0f, 1U);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1024AC0);
break;
@@ -660,7 +660,7 @@ void func_8005BAB4(s32 arg0, s32 arg1) {
func_800BA550();
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 0, 0, 0, 255);
gDPSetEnvColor(gMasterDisp++, 0, 0, 0, 255);
- Matrix_Scale(D_8013B3C0, 4.0f, 4.0f, 4.0f, 1);
+ Matrix_Scale(gGfxMatrix, 4.0f, 4.0f, 4.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1024AC0);
break;
@@ -674,29 +674,29 @@ void func_8005C5F0(Object_6C* arg0) {
s32 i;
if ((D_80177DB0 & 0x18) && (arg0->unk_46 == 0)) {
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_800B8DD0(&gMasterDisp, 0x40);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 0, 255);
- Matrix_Scale(D_8013B3C0, 3.2f, 3.2f, 3.2f, 1);
+ Matrix_Scale(gGfxMatrix, 3.2f, 3.2f, 3.2f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gDPSetTextureFilter(gMasterDisp++, G_TF_POINT);
gSPDisplayList(gMasterDisp++, D_1023C80);
gDPSetTextureFilter(gMasterDisp++, G_TF_BILERP);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
func_800B8DD0(&gMasterDisp, 0x1D);
gSPTexture(gMasterDisp++, 2000, 2000, 0, G_TX_RENDERTILE, G_ON);
gSPSetGeometryMode(gMasterDisp++, G_TEXTURE_GEN);
- Matrix_RotateZ(D_8013B3C0, arg0->unk_58 * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, arg0->unk_58 * M_DTOR, 1);
for (i = 0; i < 8; i++) {
- Matrix_Push(&D_8013B3C0);
- Matrix_RotateZ(D_8013B3C0, i * 45.0f * M_DTOR, 1);
- Matrix_Translate(D_8013B3C0, 2.0f * arg0->unk_68, 0.0f, 0.0f, 1);
- Matrix_RotateZ(D_8013B3C0, (D_80177DB0 + (i * 110.0f)) * M_DTOR * 7.2f * arg0->unk_54, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_RotateZ(gGfxMatrix, i * 45.0f * M_DTOR, 1);
+ Matrix_Translate(gGfxMatrix, 2.0f * arg0->unk_68, 0.0f, 0.0f, 1);
+ Matrix_RotateZ(gGfxMatrix, (D_80177DB0 + (i * 110.0f)) * M_DTOR * 7.2f * arg0->unk_54, 1);
func_8005980C(2.0f * arg0->unk_50);
gSPDisplayList(gMasterDisp++, D_101CAE0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
gSPClearGeometryMode(gMasterDisp++, G_TEXTURE_GEN);
}
@@ -772,80 +772,80 @@ void func_8005CDA8(Object_6C* arg0) {
}
gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK | G_LIGHTING); // wrong order?
for (i = 0; i < 7; i++) {
- Matrix_Push(&D_8013B3C0);
- Matrix_RotateZ(D_8013B3C0, (i * 360.0f / 7.0f) * M_DTOR, 1);
- Matrix_Translate(D_8013B3C0, 0.0f, arg0->unk_68, 0.0f, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_RotateZ(gGfxMatrix, (i * 360.0f / 7.0f) * M_DTOR, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, arg0->unk_68, 0.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_102FE80);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK | G_LIGHTING);
}
void func_8005D008(Object* arg0, s32 arg1) {
if (arg1 == 2) {
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, D_80177D20, 1);
- Matrix_Translate(D_8013BBC8, arg0->pos.x, arg0->pos.y, arg0->pos.z, 0);
- Matrix_Push(&D_8013B3C0);
- Matrix_Mult(D_8013B3C0, D_8013BBC8, 1);
- Matrix_Copy(&D_801615F0, D_8013B3C0);
- Matrix_Pop(&D_8013B3C0);
- Matrix_RotateY(D_8013BBC8, arg0->rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013BBC8, arg0->rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013BBC8, arg0->rot.z * M_DTOR, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, D_80177D20, 1);
+ Matrix_Translate(gCalcMatrix, arg0->pos.x, arg0->pos.y, arg0->pos.z, 0);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Mult(gGfxMatrix, gCalcMatrix, 1);
+ Matrix_Copy(&D_801615F0, gGfxMatrix);
+ Matrix_Pop(&gGfxMatrix);
+ Matrix_RotateY(gCalcMatrix, arg0->rot.y * M_DTOR, 1);
+ Matrix_RotateX(gCalcMatrix, arg0->rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gCalcMatrix, arg0->rot.z * M_DTOR, 1);
} else {
- Matrix_Translate(D_8013B3C0, arg0->pos.x, arg0->pos.y, arg0->pos.z + D_80177D20, 1);
- Matrix_Copy(&D_801615F0, D_8013B3C0);
- Matrix_RotateY(D_8013B3C0, arg0->rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013B3C0, arg0->rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013B3C0, arg0->rot.z * M_DTOR, 1);
+ Matrix_Translate(gGfxMatrix, arg0->pos.x, arg0->pos.y, arg0->pos.z + D_80177D20, 1);
+ Matrix_Copy(&D_801615F0, gGfxMatrix);
+ Matrix_RotateY(gGfxMatrix, arg0->rot.y * M_DTOR, 1);
+ Matrix_RotateX(gGfxMatrix, arg0->rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, arg0->rot.z * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
}
}
void func_8005D1F0(Object* arg0, s32 arg1) {
if (arg1 == 2) {
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, D_80177D20, 1);
- Matrix_Translate(D_8013BBC8, arg0->pos.x, arg0->pos.y, arg0->pos.z, 0);
- Matrix_Push(&D_8013B3C0);
- Matrix_Mult(D_8013B3C0, D_8013BBC8, 1);
- Matrix_Copy(&D_801615F0, D_8013B3C0);
- Matrix_Pop(&D_8013B3C0);
- Matrix_RotateY(D_8013BBC8, arg0->rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013BBC8, arg0->rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013BBC8, arg0->rot.z * M_DTOR, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, D_80177D20, 1);
+ Matrix_Translate(gCalcMatrix, arg0->pos.x, arg0->pos.y, arg0->pos.z, 0);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Mult(gGfxMatrix, gCalcMatrix, 1);
+ Matrix_Copy(&D_801615F0, gGfxMatrix);
+ Matrix_Pop(&gGfxMatrix);
+ Matrix_RotateY(gCalcMatrix, arg0->rot.y * M_DTOR, 1);
+ Matrix_RotateX(gCalcMatrix, arg0->rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gCalcMatrix, arg0->rot.z * M_DTOR, 1);
} else {
- Matrix_Translate(D_8013B3C0, arg0->pos.x, arg0->pos.y, arg0->pos.z + D_80177D20, 1);
- Matrix_Copy(&D_801615F0, D_8013B3C0);
- Matrix_RotateY(D_8013B3C0, arg0->rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013B3C0, arg0->rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013B3C0, arg0->rot.z * M_DTOR, 1);
+ Matrix_Translate(gGfxMatrix, arg0->pos.x, arg0->pos.y, arg0->pos.z + D_80177D20, 1);
+ Matrix_Copy(&D_801615F0, gGfxMatrix);
+ Matrix_RotateY(gGfxMatrix, arg0->rot.y * M_DTOR, 1);
+ Matrix_RotateX(gGfxMatrix, arg0->rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, arg0->rot.z * M_DTOR, 1);
}
}
void func_8005D3CC(Object* arg0, f32 arg1, f32 arg2, f32 arg3, s32 arg4) {
if (arg4 == 2) {
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, D_80177D20, 1);
- Matrix_Translate(D_8013BBC8, arg0->pos.x, arg0->pos.y, arg0->pos.z, 0);
- Matrix_Push(&D_8013B3C0);
- Matrix_Mult(D_8013B3C0, D_8013BBC8, 1);
- Matrix_Copy(&D_801615F0, D_8013B3C0);
- Matrix_Pop(&D_8013B3C0);
- Matrix_RotateY(D_8013BBC8, M_DTOR * arg2, 1);
- Matrix_RotateX(D_8013BBC8, M_DTOR * arg1, 1);
- Matrix_RotateZ(D_8013BBC8, M_DTOR * arg3, 1);
- Matrix_RotateY(D_8013BBC8, arg0->rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013BBC8, arg0->rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013BBC8, arg0->rot.z * M_DTOR, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, D_80177D20, 1);
+ Matrix_Translate(gCalcMatrix, arg0->pos.x, arg0->pos.y, arg0->pos.z, 0);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Mult(gGfxMatrix, gCalcMatrix, 1);
+ Matrix_Copy(&D_801615F0, gGfxMatrix);
+ Matrix_Pop(&gGfxMatrix);
+ Matrix_RotateY(gCalcMatrix, M_DTOR * arg2, 1);
+ Matrix_RotateX(gCalcMatrix, M_DTOR * arg1, 1);
+ Matrix_RotateZ(gCalcMatrix, M_DTOR * arg3, 1);
+ Matrix_RotateY(gCalcMatrix, arg0->rot.y * M_DTOR, 1);
+ Matrix_RotateX(gCalcMatrix, arg0->rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gCalcMatrix, arg0->rot.z * M_DTOR, 1);
} else {
- Matrix_Translate(D_8013B3C0, arg0->pos.x, arg0->pos.y, arg0->pos.z + D_80177D20, 1);
- Matrix_Copy(&D_801615F0, D_8013B3C0);
- Matrix_RotateY(D_8013B3C0, M_DTOR * arg2, 1);
- Matrix_RotateX(D_8013B3C0, M_DTOR * arg1, 1);
- Matrix_RotateZ(D_8013B3C0, M_DTOR * arg3, 1);
- Matrix_RotateY(D_8013B3C0, arg0->rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013B3C0, arg0->rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013B3C0, arg0->rot.z * M_DTOR, 1);
+ Matrix_Translate(gGfxMatrix, arg0->pos.x, arg0->pos.y, arg0->pos.z + D_80177D20, 1);
+ Matrix_Copy(&D_801615F0, gGfxMatrix);
+ Matrix_RotateY(gGfxMatrix, M_DTOR * arg2, 1);
+ Matrix_RotateX(gGfxMatrix, M_DTOR * arg1, 1);
+ Matrix_RotateZ(gGfxMatrix, M_DTOR * arg3, 1);
+ Matrix_RotateY(gGfxMatrix, arg0->rot.y * M_DTOR, 1);
+ Matrix_RotateX(gGfxMatrix, arg0->rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, arg0->rot.z * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
}
}
@@ -881,7 +881,7 @@ void func_8005D654(Object_80* arg0, s32 arg1) {
}
} else if (arg0->unk_1C.unk_00 != NULL) {
func_800597C0(arg1);
- arg0->unk_1C.unk_00(arg0);
+ arg0->unk_1C.unk_00(&arg0->obj);
}
}
@@ -930,12 +930,12 @@ void func_8005D954(Object_2F4* arg0) {
arg0->unk_01C.unk_00(&arg0->obj);
func_8005F1EC(&arg0->unk_100);
if (((arg0->obj.id == 0xC6) || ((arg0->obj.id == 0xCB) && (arg0->unk_0B6 > 0))) && (D_80161410 > 0)) {
- Matrix_MultVec3f(D_8013B3C0, &sp34, &D_80177E98[arg0->unk_0E4]);
+ Matrix_MultVec3f(gGfxMatrix, &sp34, &D_80177E98[arg0->unk_0E4]);
}
}
if ((arg0->unk_0CA[0] != 0) && (D_80161410 > 0)) {
sp34.y += arg0->unk_01C.unk_1C;
- Matrix_MultVec3f(D_8013B3C0, &sp34, &D_80161578[0]);
+ Matrix_MultVec3f(gGfxMatrix, &sp34, &D_80161578[0]);
if (D_80161578[0].z > -200.0f) {
arg0->unk_0CA[0] = 0;
}
@@ -955,12 +955,12 @@ void func_8005DBC0(Object_2F4* arg0) {
D_801615EC = 0;
if (arg0->unk_01C.unk_04 == 2) {
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, D_80177D20, 1);
- Matrix_Translate(D_8013BBC8, arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 0);
- Matrix_Push(&D_8013B3C0);
- Matrix_Mult(D_8013B3C0, D_8013BBC8, 1);
- Matrix_MultVec3f(D_8013B3C0, &sp50, &D_801615E0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, D_80177D20, 1);
+ Matrix_Translate(gCalcMatrix, arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 0);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Mult(gGfxMatrix, gCalcMatrix, 1);
+ Matrix_MultVec3f(gGfxMatrix, &sp50, &D_801615E0);
+ Matrix_Pop(&gGfxMatrix);
var_fv0 = 0.0f;
var_fv1 = -12000.0f;
if ((arg0->obj.id == 197) && (arg0->unk_0E4 >= 100)) {
@@ -970,9 +970,9 @@ void func_8005DBC0(Object_2F4* arg0) {
if (((var_fv0 > D_801615E0.z) && (D_801615E0.z > var_fv1)) &&
((fabsf(D_801615E0.x) < (fabsf(D_801615E0.z * 0.5f) + 500.0f)) &&
(fabsf(D_801615E0.y) < (fabsf(D_801615E0.z * 0.5f) + 500.0f)))) {
- Matrix_RotateY(D_8013BBC8, arg0->obj.rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013BBC8, arg0->obj.rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013BBC8, arg0->obj.rot.z * M_DTOR, 1);
+ Matrix_RotateY(gCalcMatrix, arg0->obj.rot.y * M_DTOR, 1);
+ Matrix_RotateX(gCalcMatrix, arg0->obj.rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gCalcMatrix, arg0->obj.rot.z * M_DTOR, 1);
arg0->unk_01C.unk_00(&arg0->obj);
D_801615EC = 1;
if ((D_80178280->unk_1C8 == 3) && (arg0->obj.id == 0xC5) && (arg0->unk_0E4 == 0xC8)) {
@@ -980,8 +980,8 @@ void func_8005DBC0(Object_2F4* arg0) {
}
}
} else {
- Matrix_Translate(D_8013B3C0, arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 1);
- Matrix_MultVec3f(D_8013B3C0, &sp50, &D_801615E0);
+ Matrix_Translate(gGfxMatrix, arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 1);
+ Matrix_MultVec3f(gGfxMatrix, &sp50, &D_801615E0);
if ((D_80178280->unk_1C8 == 2) || (D_80178280->unk_1C8 == 0) ||
((arg0->obj.id == 0xC5) && (arg0->unk_0E4 >= 0x64)) ||
((arg0->obj.id == 0xC3) && (arg0->unk_01C.unk_20 != 0))) {
@@ -997,9 +997,9 @@ void func_8005DBC0(Object_2F4* arg0) {
if (((D_801615E0.z < var_fv0) && (var_fv1 < D_801615E0.z)) &&
((fabsf(D_801615E0.x) < (fabsf(D_801615E0.z * var_fa1) + var_ft5)) &&
(fabsf(D_801615E0.y) < (fabsf(D_801615E0.z * var_fa1) + var_ft5)) && (arg0->unk_01C.unk_00 != NULL))) {
- Matrix_RotateY(D_8013B3C0, arg0->obj.rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013B3C0, arg0->obj.rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013B3C0, arg0->obj.rot.z * M_DTOR, 1);
+ Matrix_RotateY(gGfxMatrix, arg0->obj.rot.y * M_DTOR, 1);
+ Matrix_RotateX(gGfxMatrix, arg0->obj.rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, arg0->obj.rot.z * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
arg0->unk_01C.unk_00(&arg0->obj);
D_801615EC = 1;
@@ -1124,11 +1124,11 @@ void func_8005E538(Object_8C* arg0) {
u8 sp3B = 0;
if (arg0->unk_1C.unk_14 == -1) {
- Matrix_Translate(D_8013B3C0, arg0->obj.pos.x, arg0->obj.pos.y + D_8017847C, arg0->obj.pos.z + D_80177D20, 1);
+ Matrix_Translate(gGfxMatrix, arg0->obj.pos.x, arg0->obj.pos.y + D_8017847C, arg0->obj.pos.z + D_80177D20, 1);
} else {
- Matrix_Translate(D_8013B3C0, arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z + D_80177D20, 1);
+ Matrix_Translate(gGfxMatrix, arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z + D_80177D20, 1);
}
- Matrix_MultVec3f(D_8013B3C0, &sp4C, &sp40);
+ Matrix_MultVec3f(gGfxMatrix, &sp4C, &sp40);
if ((D_80178234 == 0x12) || (D_80178234 == 0x11)) {
var_fv0 = -20000.0f;
} else {
@@ -1137,9 +1137,9 @@ void func_8005E538(Object_8C* arg0) {
if ((sp40.z < 0.0f) && (var_fv0 < sp40.z) && (fabsf(sp40.x) < (fabsf(sp40.z * 0.5f) + 500.0f)) &&
(fabsf(sp40.y) < (fabsf(sp40.z * 0.5f) + 500.0f))) {
if (arg0->unk_1C.unk_00 != NULL) {
- Matrix_RotateY(D_8013B3C0, arg0->obj.rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013B3C0, arg0->obj.rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013B3C0, arg0->obj.rot.z * M_DTOR, 1);
+ Matrix_RotateY(gGfxMatrix, arg0->obj.rot.y * M_DTOR, 1);
+ Matrix_RotateX(gGfxMatrix, arg0->obj.rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, arg0->obj.rot.z * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
arg0->unk_1C.unk_00(&arg0->obj);
}
@@ -1161,15 +1161,15 @@ void func_8005E7B8(Object_6C* arg0, s32 arg1) {
Vec3f sp38;
u8 var_v0;
- Matrix_Translate(D_8013B3C0, arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z + D_80177D20, 1);
- Matrix_MultVec3f(D_8013B3C0, &sp44, &sp38);
+ Matrix_Translate(gGfxMatrix, arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z + D_80177D20, 1);
+ Matrix_MultVec3f(gGfxMatrix, &sp44, &sp38);
var_v0 = 0;
if ((sp38.z < 0.0f) && (sp38.z > -12000.0f) && (fabsf(sp38.x) < (fabsf(sp38.z * 0.5f) + 500.0f)) &&
(fabsf(sp38.y) < (fabsf(sp38.z * 0.5f) + 500.0f))) {
if (arg0->unk_1C.unk_00 != NULL) {
- Matrix_RotateY(D_8013B3C0, arg0->obj.rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013B3C0, arg0->obj.rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013B3C0, arg0->obj.rot.z * M_DTOR, 1);
+ Matrix_RotateY(gGfxMatrix, arg0->obj.rot.y * M_DTOR, 1);
+ Matrix_RotateX(gGfxMatrix, arg0->obj.rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, arg0->obj.rot.z * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
if (arg0->unk_1C.unk_04 == 0) {
gSPDisplayList(gMasterDisp++, arg0->unk_1C.unk_00);
@@ -1190,19 +1190,19 @@ void func_8005E7B8(Object_6C* arg0, s32 arg1);
#endif
void func_8005EA24(Object_2F4* arg0) {
- Matrix_Translate(D_8013B3C0, arg0->obj.pos.x, arg0->unk_178 + 3.0f, arg0->obj.pos.z, 1);
+ Matrix_Translate(gGfxMatrix, arg0->obj.pos.x, arg0->unk_178 + 3.0f, arg0->obj.pos.z, 1);
if (D_80178234 == 0xE) {
- Matrix_RotateY(D_8013B3C0, arg0->unk_180, 1);
- Matrix_RotateX(D_8013B3C0, arg0->unk_17C, 1);
- Matrix_RotateZ(D_8013B3C0, arg0->unk_184, 1);
- Matrix_RotateY(D_8013B3C0, -arg0->unk_180, 1);
- }
- Matrix_Scale(D_8013B3C0, 1.4f, 0.0f, 1.4f, 1);
- Matrix_RotateY(D_8013B3C0, (arg0->obj.rot.y + 180.0f) * M_DTOR, 1);
- Matrix_RotateZ(D_8013B3C0, arg0->obj.rot.z * M_DTOR, 1);
+ Matrix_RotateY(gGfxMatrix, arg0->unk_180, 1);
+ Matrix_RotateX(gGfxMatrix, arg0->unk_17C, 1);
+ Matrix_RotateZ(gGfxMatrix, arg0->unk_184, 1);
+ Matrix_RotateY(gGfxMatrix, -arg0->unk_180, 1);
+ }
+ Matrix_Scale(gGfxMatrix, 1.4f, 0.0f, 1.4f, 1);
+ Matrix_RotateY(gGfxMatrix, (arg0->obj.rot.y + 180.0f) * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, arg0->obj.rot.z * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
if (arg0->unk_0E4 < 4) {
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, 30.0f, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, 30.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1032780);
} else if (D_80178234 == 0x10) {
@@ -1228,28 +1228,28 @@ void func_8005ECD8(s32 arg0, Object* arg1) {
} else {
switch (arg1->id) {
case 0xE6:
- Matrix_Translate(D_8013B3C0, arg1->pos.x, D_80177940 + 2.0f + D_80163FE0[arg0].unk_118,
+ Matrix_Translate(gGfxMatrix, arg1->pos.x, D_80177940 + 2.0f + D_80163FE0[arg0].unk_118,
arg1->pos.z + D_80177D20, 1);
break;
case 0xE5:
case 0xE7:
- Matrix_Translate(D_8013B3C0, arg1->pos.x, D_80177940 + 2.0f + D_80163FE0[arg0].unk_114,
+ Matrix_Translate(gGfxMatrix, arg1->pos.x, D_80177940 + 2.0f + D_80163FE0[arg0].unk_114,
arg1->pos.z + D_80177D20, 1);
break;
case 0x13C:
- Matrix_Translate(D_8013B3C0, arg1->pos.x, D_80177940 + 2.0f + D_8017847C, arg1->pos.z, 1);
+ Matrix_Translate(gGfxMatrix, arg1->pos.x, D_80177940 + 2.0f + D_8017847C, arg1->pos.z, 1);
break;
default:
- Matrix_Translate(D_8013B3C0, arg1->pos.x, D_80177940 + 2.0f, arg1->pos.z + D_80177D20, 1);
+ Matrix_Translate(gGfxMatrix, arg1->pos.x, D_80177940 + 2.0f, arg1->pos.z + D_80177D20, 1);
break;
}
if ((D_801784AC != 4) || (arg1->id == 0xC8) || (arg1->id == 0xC3) || (arg1->id == 0xC6)) {
- Matrix_Scale(D_8013B3C0, 1.0f, 0.0f, 1.0f, 1);
- Matrix_RotateY(D_8013B3C0, arg1->rot.y * M_DTOR, 1);
+ Matrix_Scale(gGfxMatrix, 1.0f, 0.0f, 1.0f, 1);
+ Matrix_RotateY(gGfxMatrix, arg1->rot.y * M_DTOR, 1);
}
if ((arg1->id < 0x124) && (arg1->id != 0xE6) && (arg1->id != 0xE5) && (arg1->id != 0xE7)) {
- Matrix_RotateX(D_8013B3C0, arg1->rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013B3C0, arg1->rot.z * M_DTOR, 1);
+ Matrix_RotateX(gGfxMatrix, arg1->rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, arg1->rot.z * M_DTOR, 1);
}
Matrix_SetGfxMtx(&gMasterDisp);
func_8005BAB4(arg1->id, arg0);
@@ -1284,12 +1284,12 @@ void func_8005F0E8(Vec3f* arg0, Vec3f* arg1) {
if (D_801778A8 != 1) {
arg0->x = arg0->y = arg0->z = 0.0f;
} else {
- Matrix_RotateY(D_8013BBC8, D_80178280->unk_058, 0);
- Matrix_RotateX(D_8013BBC8, D_80178280->unk_05C, 1);
+ Matrix_RotateY(gCalcMatrix, D_80178280->unk_058, 0);
+ Matrix_RotateX(gCalcMatrix, D_80178280->unk_05C, 1);
sp2C.x = arg1->x - D_801779D8.x;
sp2C.y = arg1->y - D_801779D8.y;
sp2C.z = arg1->z + D_80177D20 - D_801779D8.z;
- Matrix_MultVec3f(D_8013BBC8, &sp2C, &sp20);
+ Matrix_MultVec3f(gCalcMatrix, &sp2C, &sp20);
arg0->x = sp20.x;
arg0->y = sp20.y;
arg0->z = sp20.z;
@@ -1351,24 +1351,24 @@ void func_8005F2F4(Object_58* arg0) {
sp38 = 0.9f;
}
if ((D_80177C98 == 0) || (D_80178234 == 0x11)) {
- Matrix_Translate(D_8013B3C0, arg0->obj.pos.x, arg0->obj.pos.y + D_8017847C, arg0->obj.pos.z, 1);
+ Matrix_Translate(gGfxMatrix, arg0->obj.pos.x, arg0->obj.pos.y + D_8017847C, arg0->obj.pos.z, 1);
} else {
- Matrix_Translate(D_8013B3C0, arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 1);
+ Matrix_Translate(gGfxMatrix, arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 1);
}
- Matrix_MultVec3f(D_8013B3C0, &sp54, &sp48);
+ Matrix_MultVec3f(gGfxMatrix, &sp54, &sp48);
if ((sp48.z < sp44) && (sp40 < sp48.z) && (fabsf(sp48.y) < (fabsf(sp48.z * sp38) + sp3C)) &&
(fabsf(sp48.x) < (fabsf(sp48.z * sp38) + sp3C))) {
func_8005F670(&arg0->obj.pos);
if (arg0->obj.id == 0x83) {
- Matrix_RotateY(D_8013B3C0, arg0->obj.rot.y * M_DTOR, 1);
- Matrix_RotateX(D_8013B3C0, arg0->obj.rot.x * M_DTOR, 1);
- Matrix_RotateZ(D_8013B3C0, arg0->obj.rot.z * M_DTOR, 1);
- Matrix_RotateY(D_8013B3C0, M_PI / 2.0f, 1);
- Matrix_Translate(D_8013B3C0, -551.0f, 0.0f, 0.0f, 1);
+ Matrix_RotateY(gGfxMatrix, arg0->obj.rot.y * M_DTOR, 1);
+ Matrix_RotateX(gGfxMatrix, arg0->obj.rot.x * M_DTOR, 1);
+ Matrix_RotateZ(gGfxMatrix, arg0->obj.rot.z * M_DTOR, 1);
+ Matrix_RotateY(gGfxMatrix, M_PI / 2.0f, 1);
+ Matrix_Translate(gGfxMatrix, -551.0f, 0.0f, 0.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6007650);
} else {
- Matrix_RotateY(D_8013B3C0, arg0->obj.rot.y * M_DTOR, 1);
+ Matrix_RotateY(gGfxMatrix, arg0->obj.rot.y * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, arg0->unk_1C.unk_00);
}
@@ -1410,21 +1410,21 @@ void func_8005F670(Vec3f* arg0) {
}
sp94 = Math_Atan2F(sp9C.x, sp9C.z);
sp98 = -Math_Atan2F(sp9C.y, sqrtf(SQ(sp9C.x) + SQ(sp9C.z)));
- Matrix_Push(&D_8013BBC8);
- Matrix_RotateZ(D_8013BBC8, D_80178280[D_801778A0].unk_034 * D_80177950 * M_DTOR, 0);
- Matrix_RotateX(D_8013BBC8, -D_80178280[D_801778A0].unk_05C, 1);
- Matrix_RotateY(D_8013BBC8, D_80178280[D_801778A0].unk_058 + sp94, 1);
- Matrix_RotateX(D_8013BBC8, sp98, 1);
+ Matrix_Push(&gCalcMatrix);
+ Matrix_RotateZ(gCalcMatrix, D_80178280[D_801778A0].unk_034 * D_80177950 * M_DTOR, 0);
+ Matrix_RotateX(gCalcMatrix, -D_80178280[D_801778A0].unk_05C, 1);
+ Matrix_RotateY(gCalcMatrix, D_80178280[D_801778A0].unk_058 + sp94, 1);
+ Matrix_RotateX(gCalcMatrix, sp98, 1);
sp6C.x = 0.0f;
sp6C.y = 0.0f;
sp6C.z = -100.0f;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp6C, &sp84);
- Matrix_Pop(&D_8013BBC8);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp6C, &sp84);
+ Matrix_Pop(&gCalcMatrix);
temp1 = D_80178360 * D_8017836C * var_fs0;
temp2 = D_80178364 * D_8017836C * var_fs0;
temp3 = D_80178368 * D_8017836C * var_fs0;
- func_800038AC(&gMasterDisp, D_801784DC, D_801784E0, D_801784E4, sp84.x, sp84.y, sp84.z, D_80178548, D_8017854C,
- D_80178550, temp1, temp2, temp3, D_80178554, D_80178558, D_8017855C);
+ Lights_SetTwoLights(&gMasterDisp, D_801784DC, D_801784E0, D_801784E4, sp84.x, sp84.y, sp84.z, D_80178548,
+ D_8017854C, D_80178550, temp1, temp2, temp3, D_80178554, D_80178558, D_8017855C);
}
}
@@ -1433,12 +1433,12 @@ s32 func_8005F9DC(Vec3f* arg0) {
Vec3f sp2C;
Vec3f sp20;
- Matrix_RotateY(D_8013BBC8, D_80178280[D_801778A0].unk_058, 0);
- Matrix_RotateX(D_8013BBC8, D_80178280[D_801778A0].unk_05C, 1);
+ Matrix_RotateY(gCalcMatrix, D_80178280[D_801778A0].unk_058, 0);
+ Matrix_RotateX(gCalcMatrix, D_80178280[D_801778A0].unk_05C, 1);
sp2C.x = arg0->x - D_80178280[D_801778A0].unk_040.x;
sp2C.y = arg0->y - D_80178280[D_801778A0].unk_040.y;
sp2C.z = arg0->z - D_80178280[D_801778A0].unk_040.z;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp2C, &sp20);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp2C, &sp20);
if ((sp20.z < 1000.0f) && (sp20.z > -13000.0f) && (fabsf(sp20.x) < (fabsf(sp20.z * 0.4f) + 2000.0f)) &&
(fabsf(sp20.y) < (fabsf(sp20.y * 0.4f) + 2000.0f))) {
return 1;
@@ -1474,9 +1474,9 @@ void func_8005FB70(s32 arg0) {
Matrix_MultVec3fNoTranslate(&D_E51970_8019EE80, &spAC, &var_s0->obj.pos);
var_s0->obj.rot.y = var_s0->unk_54 + D_8016F110->obj.rot.y;
}
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005F2F4(var_s0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
} else {
@@ -1486,9 +1486,9 @@ void func_8005FB70(s32 arg0) {
if (arg0 > 0) {
func_8005F670(&var_s0_2->obj.pos);
}
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005D654(var_s0_2, arg0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
func_8005F1EC(&var_s0_2->unk_70);
}
}
@@ -1502,28 +1502,28 @@ void func_8005FB70(s32 arg0) {
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 64, 64, 255, 255);
}
func_800597C0(arg0);
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005E1B8(var_s0_3, arg0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
if ((var_s0_3->unk_05E != 0) && (D_801615D0.y > 0.0f)) {
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005ECD8(i, &var_s0_3->obj);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
}
- func_8000372C(&gMasterDisp, D_801784DC, D_801784E0, D_801784E4, D_80178548, D_8017854C, D_80178550, D_80178554,
- D_80178558, D_8017855C);
+ Lights_SetOneLight(&gMasterDisp, D_801784DC, D_801784E0, D_801784E4, D_80178548, D_8017854C, D_80178550, D_80178554,
+ D_80178558, D_8017855C);
for (i = 0, var_s0_4 = D_80163400; i < ARRAY_COUNT(D_80163400); i++, var_s0_4++) {
if ((var_s0_4->obj.status >= 2) && (func_80060FE4(&var_s0_4->obj.pos, -12000.0f) != 0)) {
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
if ((var_s0_4->obj.id == 0xA5) || (var_s0_4->obj.id == 0xA6)) {
func_800B9EB0(D_80178320, D_80178328, D_80178330, D_80178338, D_801783D8, D_801783DC);
} else {
func_800B9B38(D_80178320, D_80178328, D_80178330, D_80178338, D_801783D8, D_801783DC);
}
func_8005D8B8(var_s0_4, arg0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
for (i = 0, var_s0_5 = D_80163FE0; i < ARRAY_COUNT(D_80163FE0); i++, var_s0_5++) {
@@ -1545,28 +1545,28 @@ void func_8005FB70(s32 arg0) {
switch (D_80177880) {
case 0:
case 2:
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
if ((D_80178280->unk_1C8 == 2) || (D_80178280->unk_1C8 == 7) || (D_80178234 == 0xD)) {
func_8005F670(&var_s0_5->obj.pos);
}
func_800597C0(arg0);
func_8005D954(var_s0_5);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
if (var_s0_5->unk_0C9 != 0) {
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005ECD8(i, &var_s0_5->obj);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
break;
case 1:
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005DBC0(var_s0_5);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
if ((var_s0_5->unk_0C9 != 0) && (D_801615EC != 0) &&
((D_801615E0.z > -4000.0f) || (D_80178234 != 0x10))) {
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005ECD8(i, &var_s0_5->obj);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
break;
}
@@ -1574,18 +1574,18 @@ void func_8005FB70(s32 arg0) {
}
gDPSetFogColor(gMasterDisp++, D_80178320, D_80178328, D_80178330, D_80178338);
gSPFogPosition(gMasterDisp++, D_801783D8, D_801783DC);
- func_8000372C(&gMasterDisp, -0x3C, -0x3C, 0x3C, 0x96, 0x96, 0x96, 0x14, 0x14, 0x14);
+ Lights_SetOneLight(&gMasterDisp, -0x3C, -0x3C, 0x3C, 0x96, 0x96, 0x96, 0x14, 0x14, 0x14);
for (i = 0, var_s0_6 = D_801737E0; i < ARRAY_COUNT(D_801737E0); i++, var_s0_6++) {
if (var_s0_6->obj.status >= 2) {
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_800B8DD0(&gMasterDisp, 0x1D);
func_800597C0(arg0);
func_8005E7B8(var_s0_6, arg0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
- func_8000372C(&gMasterDisp, D_801784DC, D_801784E0, D_801784E4, D_80178548, D_8017854C, D_80178550, D_80178554,
- D_80178558, D_8017855C);
+ Lights_SetOneLight(&gMasterDisp, D_801784DC, D_801784E0, D_801784E4, D_80178548, D_8017854C, D_80178550, D_80178554,
+ D_80178558, D_8017855C);
}
void func_8006046C(s32 arg0) {
@@ -1601,18 +1601,18 @@ void func_8006046C(s32 arg0) {
var_s0->obj.rot.x = (D_80178280[D_801778A0].unk_05C * 180.0f) / M_PI;
}
if (D_80177880 == 1) {
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005E538(var_s0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
} else {
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005E454(var_s0, arg0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
func_8005F1EC(&var_s0->unk_80);
if (var_s0->obj.id == 0x176) {
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005ECD8(i, &var_s0->obj);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
}
@@ -1625,9 +1625,9 @@ void func_8006046C(s32 arg0) {
func_800BA400();
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 64, 64, 255, 255);
}
- Matrix_Push(&D_8013B3C0);
+ Matrix_Push(&gGfxMatrix);
func_8005E1B8(var_s0_2, arg0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
}
@@ -1637,14 +1637,14 @@ void func_80060714(s32 arg0) {
func_8005FB70(1);
if ((D_80161A88 == 2) && (D_80178280[0].unk_1C8 != 2)) {
D_80161410 = -1;
- func_8000372C(&gMasterDisp, D_801784DC, -1 * D_801784E0, D_801784E4, D_80178548, D_8017854C, D_80178550,
- D_80178554, D_80178558, D_8017855C);
- Matrix_Push(&D_8013B3C0);
- Matrix_Scale(D_8013B3C0, 1.0f, -1.0f, 1.0f, 1);
+ Lights_SetOneLight(&gMasterDisp, D_801784DC, -1 * D_801784E0, D_801784E4, D_80178548, D_8017854C, D_80178550,
+ D_80178554, D_80178558, D_8017855C);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Scale(gGfxMatrix, 1.0f, -1.0f, 1.0f, 1);
func_8005FB70(-1);
- Matrix_Pop(&D_8013B3C0);
- func_8000372C(&gMasterDisp, D_801784DC, D_801784E0, D_801784E4, D_80178548, D_8017854C, D_80178550, D_80178554,
- D_80178558, D_8017855C);
+ Matrix_Pop(&gGfxMatrix);
+ Lights_SetOneLight(&gMasterDisp, D_801784DC, D_801784E0, D_801784E4, D_80178548, D_8017854C, D_80178550,
+ D_80178554, D_80178558, D_8017855C);
}
}
@@ -1654,10 +1654,10 @@ void func_8006089C(u8 arg0) {
func_8006046C(1);
} else if ((D_80161A88 == 2) && (D_80178280->unk_1C8 != 2)) {
D_80161410 = -1;
- Matrix_Push(&D_8013B3C0);
- Matrix_Scale(D_8013B3C0, 1.0f, -1.0f, 1.0f, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Scale(gGfxMatrix, 1.0f, -1.0f, 1.0f, 1);
func_8006046C(-1);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
D_80161410 = 1;
}
@@ -1677,26 +1677,26 @@ void func_80060968(void) {
}
for (i = 0; i < ARRAY_COUNT(D_80174750); i++) {
if (D_80174750[i].unk_00 != 0) {
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, D_80174750[i].unk_04, D_80174750[i].unk_08, D_80174750[i].unk_0C + D_80177D20,
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, D_80174750[i].unk_04, D_80174750[i].unk_08, D_80174750[i].unk_0C + D_80177D20,
1);
- Matrix_RotateY(D_8013B3C0, D_80174750[i].unk_20, 1);
- Matrix_RotateX(D_8013B3C0, D_80174750[i].unk_1C, 1);
- Matrix_RotateZ(D_8013B3C0, D_80174750[i].unk_20, 1);
- Matrix_Scale(D_8013B3C0, D_80174750[i].unk_28, D_80174750[i].unk_28, D_80174750[i].unk_24, 1);
+ Matrix_RotateY(gGfxMatrix, D_80174750[i].unk_20, 1);
+ Matrix_RotateX(gGfxMatrix, D_80174750[i].unk_1C, 1);
+ Matrix_RotateZ(gGfxMatrix, D_80174750[i].unk_20, 1);
+ Matrix_Scale(gGfxMatrix, D_80174750[i].unk_28, D_80174750[i].unk_28, D_80174750[i].unk_24, 1);
if ((D_80178234 == 0xD) || (D_80178234 == 9)) {
var_a1 = (D_80177DB0 & 1) ? 180 : 50;
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, var_a1);
if (D_80178234 == 0xD) {
- Matrix_Scale(D_8013B3C0, 0.01f, 0.3f, 0.0025f, 1);
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, -200.0f, 1);
- Matrix_RotateZ(D_8013B3C0, D_80177DB0 * 5.0f * M_DTOR, 1);
+ Matrix_Scale(gGfxMatrix, 0.01f, 0.3f, 0.0025f, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -200.0f, 1);
+ Matrix_RotateZ(gGfxMatrix, D_80177DB0 * 5.0f * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_60119A0);
} else if (D_80178234 == 9) {
- Matrix_Scale(D_8013B3C0, 1.0f, 1.0f, 0.0025f, 1);
- Matrix_Translate(D_8013B3C0, 0.0f, 0.0f, -200.0f, 1);
- Matrix_RotateZ(D_8013B3C0, D_80177DB0 * 25.0f * M_DTOR, 1);
+ Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 0.0025f, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, 0.0f, -200.0f, 1);
+ Matrix_RotateZ(gGfxMatrix, D_80177DB0 * 25.0f * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_C017440);
}
@@ -1710,7 +1710,7 @@ void func_80060968(void) {
gSPDisplayList(gMasterDisp++, D_800CFD80);
}
}
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
}
@@ -1728,15 +1728,15 @@ void func_80060D94(s32 arg0) {
func_800B8DD0(&gMasterDisp, 0xE);
}
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, temp_s0->unk_2C, temp_s0->unk_2D, temp_s0->unk_2E, temp_s0->unk_2F);
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, temp_s0->unk_04, temp_s0->unk_08, temp_s0->unk_0C, 1);
- Matrix_RotateY(D_8013B3C0, temp_s0->unk_20, 1);
- Matrix_RotateX(D_8013B3C0, temp_s0->unk_1C, 1);
- Matrix_RotateZ(D_8013B3C0, temp_s0->unk_1C, 1);
- Matrix_Scale(D_8013B3C0, temp_s0->unk_28, 1.0f, temp_s0->unk_24, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, temp_s0->unk_04, temp_s0->unk_08, temp_s0->unk_0C, 1);
+ Matrix_RotateY(gGfxMatrix, temp_s0->unk_20, 1);
+ Matrix_RotateX(gGfxMatrix, temp_s0->unk_1C, 1);
+ Matrix_RotateZ(gGfxMatrix, temp_s0->unk_1C, 1);
+ Matrix_Scale(gGfxMatrix, temp_s0->unk_28, 1.0f, temp_s0->unk_24, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPClearGeometryMode(gMasterDisp++, G_CULL_BACK);
gSPDisplayList(gMasterDisp++, D_800CFD80);
gSPSetGeometryMode(gMasterDisp++, G_CULL_BACK);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
diff --git a/src/main/sf_61B30.c b/src/main/sf_61B30.c
index 038e6043..a8e57566 100644
--- a/src/main/sf_61B30.c
+++ b/src/main/sf_61B30.c
@@ -20,11 +20,11 @@ s32 func_80060FE4(Vec3f* arg0, f32 arg1) {
if ((D_80177880 != 1) && (D_80178280[0].unk_1C8 != 2)) {
return 1;
}
- Matrix_RotateY(D_8013BBC8, D_80178280[D_801778A0].unk_058, 0);
+ Matrix_RotateY(gCalcMatrix, D_80178280[D_801778A0].unk_058, 0);
sp2C.x = arg0->x - D_80178280[D_801778A0].unk_040.x;
sp2C.y = 0.0f;
sp2C.z = arg0->z - D_80178280[D_801778A0].unk_040.z;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp2C, &sp20);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp2C, &sp20);
if ((sp20.z < 1000.0f) && (arg1 < sp20.z) && (fabsf(sp20.x) < (fabsf(sp20.z * 0.5f) + 2000.0f))) {
return 1;
@@ -42,11 +42,11 @@ s32 func_80061148(Vec3f* arg0, f32 arg1) {
if (D_80178280[0].unk_1C8 == 7) {
return func_80060FE4(arg0, arg1);
}
- Matrix_RotateY(D_8013BBC8, D_80178280[D_801778A0].unk_058, 0);
+ Matrix_RotateY(gCalcMatrix, D_80178280[D_801778A0].unk_058, 0);
sp2C.x = arg0->x - D_80178280[D_801778A0].unk_040.x;
sp2C.y = 0.0f;
sp2C.z = arg0->z - D_80178280[D_801778A0].unk_040.z;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp2C, &sp20);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp2C, &sp20);
if ((sp20.z < 0.0f) && (arg1 < sp20.z) && (fabsf(sp20.x) < (fabsf(sp20.z * 0.5f) + 500.0f))) {
return 1;
@@ -325,13 +325,13 @@ void func_80061F0C(Object_2F4* arg0, ObjectInit* arg1, s32 arg2) {
arg0->unk_054 = D_80177E70;
arg0->unk_078 = D_80163FE0[D_80177E70].unk_0E4;
arg0->unk_16C = D_80161A54;
- Matrix_RotateZ(D_8013BBC8, -D_80177E88.z * M_DTOR, 0);
- Matrix_RotateX(D_8013BBC8, -D_80177E88.x * M_DTOR, 1);
- Matrix_RotateY(D_8013BBC8, -D_80177E88.y * M_DTOR, 1);
+ Matrix_RotateZ(gCalcMatrix, -D_80177E88.z * M_DTOR, 0);
+ Matrix_RotateX(gCalcMatrix, -D_80177E88.x * M_DTOR, 1);
+ Matrix_RotateY(gCalcMatrix, -D_80177E88.y * M_DTOR, 1);
sp24.x = arg0->obj.pos.x - D_80177F10.x;
sp24.y = arg0->obj.pos.y - D_80177F10.y;
sp24.z = arg0->obj.pos.z - D_80177F10.z;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp24, &arg0->unk_2DC);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp24, &arg0->unk_2DC);
arg0->unk_074 = D_80177E78;
D_80177E70 = arg2;
func_80069AAC(arg0);
@@ -619,21 +619,21 @@ s32 func_80062DBC(Vec3f* arg0, f32* var_s0, Object* arg2, f32 arg3, f32 arg4, f3
var_ft4 = arg0->y;
var_ft5 = arg0->z;
} else {
- Matrix_RotateZ(D_8013BBC8, -var_fa0 * M_DTOR, 0);
- Matrix_RotateX(D_8013BBC8, -var_fs1 * M_DTOR, 1);
- Matrix_RotateY(D_8013BBC8, -var_fs2 * M_DTOR, 1);
- Matrix_RotateZ(D_8013BBC8, -arg2->rot.z * M_DTOR, 1);
- Matrix_RotateX(D_8013BBC8, -arg2->rot.x * M_DTOR, 1);
- Matrix_RotateY(D_8013BBC8, -arg2->rot.y * M_DTOR, 1);
+ Matrix_RotateZ(gCalcMatrix, -var_fa0 * M_DTOR, 0);
+ Matrix_RotateX(gCalcMatrix, -var_fs1 * M_DTOR, 1);
+ Matrix_RotateY(gCalcMatrix, -var_fs2 * M_DTOR, 1);
+ Matrix_RotateZ(gCalcMatrix, -arg2->rot.z * M_DTOR, 1);
+ Matrix_RotateX(gCalcMatrix, -arg2->rot.x * M_DTOR, 1);
+ Matrix_RotateY(gCalcMatrix, -arg2->rot.y * M_DTOR, 1);
if ((arg3 != 0.0f) || (arg4 != 0.0f) || (arg5 != 0.0f)) {
- Matrix_RotateZ(D_8013BBC8, -arg5 * M_DTOR, 1);
- Matrix_RotateX(D_8013BBC8, -arg3 * M_DTOR, 1);
- Matrix_RotateY(D_8013BBC8, -arg4 * M_DTOR, 1);
+ Matrix_RotateZ(gCalcMatrix, -arg5 * M_DTOR, 1);
+ Matrix_RotateX(gCalcMatrix, -arg3 * M_DTOR, 1);
+ Matrix_RotateY(gCalcMatrix, -arg4 * M_DTOR, 1);
}
sp80.x = arg0->x - arg2->pos.x;
sp80.y = arg0->y - arg2->pos.y;
sp80.z = arg0->z - arg2->pos.z;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp80, &sp74);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp80, &sp74);
var_fa1 = arg2->pos.x + sp74.x;
var_ft4 = arg2->pos.y + sp74.y;
var_ft5 = arg2->pos.z + sp74.z;
@@ -673,8 +673,8 @@ s32 func_8006326C(Vec3f* arg0, s32 arg1, s32 arg2, Object* arg3) {
sp74.z = arg0->z - arg3->pos.z;
if (((fabsf(sp74.x) < 1100.0f) && (fabsf(sp74.z) < 1100.0f)) || (arg2 == 0xB4)) {
sp74.y = arg0->y - arg3->pos.y;
- Matrix_RotateY(D_8013BBC8, -arg3->rot.y * M_DTOR, 0U);
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp74, &sp68);
+ Matrix_RotateY(gCalcMatrix, -arg3->rot.y * M_DTOR, 0U);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp74, &sp68);
sp5C.x = arg3->pos.x + sp68.x;
sp5C.y = arg3->pos.y + sp68.y;
sp5C.z = arg3->pos.z + sp68.z;
@@ -1742,10 +1742,10 @@ void func_80066A8C(Object_80* arg0) {
sp64.x = 120.0f;
}
for (yf = 0.0f; yf < 680.0f; yf += 100.0f) {
- Matrix_RotateY(D_8013BBC8, arg0->obj.rot.y * M_DTOR, 0);
- Matrix_RotateX(D_8013BBC8, arg0->obj.rot.x * M_DTOR, 1);
+ Matrix_RotateY(gCalcMatrix, arg0->obj.rot.y * M_DTOR, 0);
+ Matrix_RotateX(gCalcMatrix, arg0->obj.rot.x * M_DTOR, 1);
sp64.y = yf;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp64, &sp58);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp64, &sp58);
func_8007D0E0(arg0->obj.pos.x + sp58.x, arg0->obj.pos.y + sp58.y, arg0->obj.pos.z + sp58.z, 4.0f);
}
}
@@ -1760,11 +1760,11 @@ void func_80066C00(Object_80* arg0) {
if (arg0->obj.rot.y > 90.0f) {
sp64.x = 100.0f;
}
- Matrix_RotateY(D_8013BBC8, arg0->obj.rot.y * M_DTOR, 0);
+ Matrix_RotateY(gCalcMatrix, arg0->obj.rot.y * M_DTOR, 0);
for (zf = -180.0f; zf <= 0.0f; zf += 30.0f) {
sp64.z = zf;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp64, &sp58);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp64, &sp58);
func_8007D0E0(arg0->obj.pos.x + sp58.x, arg0->obj.pos.y + sp58.y, arg0->obj.pos.z + sp58.z,
Rand_ZeroOne() + 2.0f);
}
@@ -1868,11 +1868,11 @@ void func_800671D0(Object_6C* arg0) {
var_v0 = 7;
}
if (!(var_v0 & D_80177DB0)) {
- Matrix_RotateY(D_8013BBC8, D_80177DB0 * 23.0f * M_DTOR, 0);
+ Matrix_RotateY(gCalcMatrix, D_80177DB0 * 23.0f * M_DTOR, 0);
sp40.x = 50.0f;
sp40.y = (Rand_ZeroOne() - 0.5f) * 120.0f;
sp40.z = 0.0f;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp40, &sp34);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp40, &sp34);
func_80078E50(arg0->obj.pos.x + sp34.x, arg0->obj.pos.y + sp34.y, arg0->obj.pos.z + sp34.z, 3.0f);
}
arg0->obj.rot.y += arg0->unk_50;
@@ -1959,18 +1959,18 @@ void func_8006753C(Object_2F4* arg0) {
void func_80067874(Object_2F4* arg0) {
s32 i;
- func_8000372C(&gMasterDisp, -60, -60, 60, 150, 150, 150, 20, 20, 20);
+ Lights_SetOneLight(&gMasterDisp, -60, -60, 60, 150, 150, 150, 20, 20, 20);
for (i = 0; i < 6; i++) {
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, D_800CFEC4[i].x, D_800CFEC4[i].y, D_800CFEC4[i].z, 1);
- Matrix_RotateY(D_8013B3C0, D_800CFF0C[i].y * M_DTOR, 1);
- Matrix_RotateX(D_8013B3C0, D_800CFF0C[i].x * M_DTOR, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, D_800CFEC4[i].x, D_800CFEC4[i].y, D_800CFEC4[i].z, 1);
+ Matrix_RotateY(gGfxMatrix, D_800CFF0C[i].y * M_DTOR, 1);
+ Matrix_RotateX(gGfxMatrix, D_800CFF0C[i].x * M_DTOR, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_10177C0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
- func_8000372C(&gMasterDisp, D_801784DC, D_801784E0, D_801784E4, D_80178548, D_8017854C, D_80178550, D_80178554,
- D_80178558, D_8017855C);
+ Lights_SetOneLight(&gMasterDisp, D_801784DC, D_801784E0, D_801784E4, D_80178548, D_8017854C, D_80178550, D_80178554,
+ D_80178558, D_8017855C);
}
void func_80067A40(void) {
@@ -2133,12 +2133,12 @@ void func_80068020(Object_6C* arg0) {
func_80060FBC(&arg0->obj, &arg0->unk_5C);
}
if (arg0->unk_68 > 0.3f) {
- Matrix_RotateY(D_8013BBC8, arg0->obj.rot.y * M_DTOR, 0);
- Matrix_RotateZ(D_8013BBC8, D_80177DB0 * 37.0f * M_DTOR, 1);
+ Matrix_RotateY(gCalcMatrix, arg0->obj.rot.y * M_DTOR, 0);
+ Matrix_RotateZ(gCalcMatrix, D_80177DB0 * 37.0f * M_DTOR, 1);
sp4C.x = 0.0f;
sp4C.y = arg0->unk_68 * 100.0f;
sp4C.z = 0.0f;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp4C, &sp40);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp4C, &sp40);
func_80078E50(arg0->obj.pos.x + sp40.x, arg0->obj.pos.y + sp40.y, arg0->obj.pos.z + sp40.z, 3.5f);
}
break;
@@ -2545,14 +2545,14 @@ void func_80069AAC(Object_2F4* arg0) {
if (D_801778E8 != 0) {
for (i = 0; i < D_801778A8; i++) {
if (arg0->unk_0CA[i] != 0) {
- if (!(D_800DD880[i].button & 0x8000)) {
+ if (!(gCurrentInput[i].button & 0x8000)) {
arg0->unk_0CA[i]--;
}
D_801779C8[i] = 0;
}
}
} else if (arg0->unk_0CA[0] != 0) {
- if (!(D_800DD880[D_80177AF8].button & 0x8000)) {
+ if (!(gCurrentInput[D_80177AF8].button & 0x8000)) {
arg0->unk_0CA[0]--;
}
D_801779C8[0] = 0;
@@ -2726,12 +2726,12 @@ void func_8006A06C(UnkStruct_D_80174750* arg0) {
if (D_80177834 == 7) {
if (((arg0->unk_00 == 1) || (arg0->unk_00 == 0x65) || (arg0->unk_00 == 0x32)) && (D_80178280[0].unk_1C8 == 3) &&
(D_80178280[0].unk_1F4 == 0)) {
- Matrix_RotateX(D_8013BBC8, -arg0->unk_1C, 0);
- Matrix_RotateY(D_8013BBC8, -arg0->unk_20, 1);
+ Matrix_RotateX(gCalcMatrix, -arg0->unk_1C, 0);
+ Matrix_RotateY(gCalcMatrix, -arg0->unk_20, 1);
sp44.x = D_80178280[D_801778A0].unk_074 - arg0->unk_04;
sp44.y = D_80178280[D_801778A0].unk_078 - arg0->unk_08;
sp44.z = D_80178280[D_801778A0].unk_138 - arg0->unk_0C;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp44, &sp38);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38);
sp38.x += arg0->unk_04;
sp38.y += arg0->unk_08;
sp38.z += arg0->unk_0C;
diff --git a/src/main/sf_A24B0.c b/src/main/sf_A24B0.c
index ab6f62a7..d7337795 100644
--- a/src/main/sf_A24B0.c
+++ b/src/main/sf_A24B0.c
@@ -6,7 +6,7 @@ extern void func_80187520(s32, void*);
#define RGBA16_BLUE(color16) ((((color16) >> 1) & 0x1F) * 8)
void func_800A18B0(void) {
- func_80006F20();
+ Memory_FreeAll();
Rand_Init();
Rand_SetSeed(1, 29000, 9876);
D_80177834 = 100;
@@ -48,17 +48,17 @@ void func_800A1980(void) {
case 0:
return;
}
- func_80006F20();
+ Memory_FreeAll();
func_800A6148();
D_80177834 = D_80161A32;
D_8017783C = 3;
D_8015F924 = 0;
D_80161A32 = 0;
D_80177820 = 0;
- D_80137E88 = D_80161A36 = 0;
+ gFillScreenColor = D_80161A36 = 0;
D_80177D20 = 0.0f;
if ((D_80178234 == 0x13) && (D_8017827C == 2)) {
- D_80137E88 = D_80161A36 = 0xFFFF;
+ gFillScreenColor = D_80161A36 = 0xFFFF;
D_80178348 = D_80178350 = D_80178354 = 0xFF;
} else {
D_80178348 = D_80178350 = D_80178354 = 0;
@@ -105,8 +105,8 @@ s32 func_800A1B6C(void) {
void func_800A1C14(Gfx** arg0) {
gSPDisplayList((*arg0)++, D_Gfx_800DBAA0);
gDPSetScissor((*arg0)++, G_SC_NON_INTERLACE, 8, 8, 312, 232);
- gDPSetDepthImage((*arg0)++, &D_80282000);
- gDPSetColorImage((*arg0)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, &D_80282000);
+ gDPSetDepthImage((*arg0)++, &gZBuffer);
+ gDPSetColorImage((*arg0)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, &gZBuffer);
gDPSetFillColor((*arg0)++, 0xFFFCFFFC);
gDPFillRectangle((*arg0)++, 8, 8, 311, 231);
gDPSetColorImage((*arg0)++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 320, gFrameBuffer);
@@ -288,7 +288,7 @@ void func_800A26C0(void) {
func_800A1C14(&gUnkDisp1);
func_800A25DC();
if (func_800A1B6C() != 1) {
- func_8000316C(&gUnkDisp1);
+ Lib_Perspective(&gUnkDisp1);
func_800A1FB0(&gUnkDisp1, D_801778A8, 0);
if (D_8017783C != 0) {
D_8017783C--;
@@ -314,12 +314,12 @@ void func_800A26C0(void) {
D_80177834++;
break;
case 0x67:
- if (func_800C3194() != 0) {
- D_80178870 = *((SaveFile*) &D_800D4D10);
- func_800C3084();
+ if (Save_Read() != 0) {
+ gSaveFile = *((SaveFile*) &D_800D4D10);
+ Save_Write();
}
D_80177834++;
- func_80006FD8(MSEC_TO_CYCLES(1000), func_80007068, &D_80177834, 1);
+ Timer_CreateTask(MSEC_TO_CYCLES(1000), Timer_Increment, &D_80177834, 1);
case 0x68:
func_800B8DD0(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0x00, 0x00, 255, 255, 255, 255);
@@ -338,7 +338,7 @@ void func_800A26C0(void) {
D_80177834 = 2;
D_80177AE0 = 1;
D_80177824 = 1;
- func_80006F20();
+ Memory_FreeAll();
func_800A6148();
D_801778A8 = 1;
D_80161AA0[0] = 2;
@@ -368,7 +368,7 @@ void func_800A26C0(void) {
D_800D3180[i] = 0;
}
D_801779F8 = 0;
- D_80177C74 = D_80178870.raw[0x14];
+ D_80177C74 = gSaveFile.save.data.unk_14;
switch (D_80177C74) {
case 0:
var_v0_3 = 0;
@@ -385,9 +385,9 @@ void func_800A26C0(void) {
break;
}
func_800182F4(var_v0_3 | 0xE0000000);
- D_80177C80[0] = D_80178870.raw[0x15];
- D_80177C80[1] = D_80178870.raw[0x16];
- D_80177C80[2] = D_80178870.raw[0x17];
+ D_80177C80[0] = gSaveFile.save.data.unk_15;
+ D_80177C80[1] = gSaveFile.save.data.unk_16;
+ D_80177C80[2] = gSaveFile.save.data.unk_17;
if (D_80177C80[0] > 99) {
D_80177C80[0] = 99;
}
diff --git a/src/main/sf_C3BB0.c b/src/main/sf_C3BB0.c
deleted file mode 100644
index 65fc0c41..00000000
--- a/src/main/sf_C3BB0.c
+++ /dev/null
@@ -1,72 +0,0 @@
-#include "global.h"
-
-#ifdef DATA_IMPORT_PENDING
-SaveFile D_80178870;
-#else
-extern SaveFile D_80178870;
-#endif
-
-u16 func_800C2FB0(Save* arg0) {
- u16 var_v1;
- s32 i;
-
- for (i = 0, var_v1 = 0; i < 0xFE; i++) {
- var_v1 ^= arg0->checksum.unk_00[i];
- var_v1 <<= 1;
- var_v1 = (var_v1 & 0xFE) | ((var_v1 >> 8) & 1);
- }
-
- var_v1 = (var_v1 & 0xFF) | 0x9500;
-
- return var_v1;
-}
-
-s32 func_800C3084(void) {
- void* sp1C;
-
- D_80178870.save[0].checksum.unk_FE = func_800C2FB0(&D_80178870.save[0]);
- D_80178870.save[1] = D_80178870.save[0];
- D_80144F60 = D_80178870;
- osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_12, OS_MESG_PRI_NORMAL);
- osRecvMesg(&D_800E2318, &sp1C, OS_MESG_BLOCK);
- if (sp1C != (OSMesg) SI_MESG_15) {
- return -1;
- }
- return 0;
-}
-
-#ifdef DATA_IMPORT_PENDING
-s32 func_800C3194(void) {
- void* sp24;
- s32 i;
-
- osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_11, OS_MESG_PRI_NORMAL);
- osRecvMesg(&D_800E2318, &sp24, OS_MESG_BLOCK);
- if ((s32) sp24 != SI_MESG_15) {
- return -1;
- }
-
- D_80178870 = D_80144F60;
-
- if (D_80178870.save[0].unk_FE == func_800C2FB0(&D_80178870.save[0])) {
- (void) "EEPROM ROM[0] 正常\n";
- return 0;
- }
-
- for (i = 0; i < 0xFF; i++) {
- D_80178870.save[0].unk_0[i] = D_80178870.save[1].unk_0[i];
- }
- D_80178870.save[0].unk_FE = D_80178870.save[1].unk_FE;
-
- if (D_80178870.save[0].unk_FE == func_800C2FB0(&D_80178870.save[0])) {
- (void) "EEPROM ROM[1] 正常\n";
- return 0;
- }
- (void) "EEPROM ROM[0] & ROM[1] 異常\n";
- return -1;
-}
-#else
-
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3BB0/func_800C3194.s")
-#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3BB0/D_800D9430.s")
-#endif
diff --git a/src/main/sf_hud.c b/src/main/sf_hud.c
index 903eac97..799b8fc6 100644
--- a/src/main/sf_hud.c
+++ b/src/main/sf_hud.c
@@ -80,29 +80,29 @@ void func_80084B94(s32 arg0) {
if (arg0 == 0) {
for (i = 1; i < 4; i++) {
if (((D_801778B0[i] != 0) || (D_80178280->unk_1C8 != 7)) && (D_801778B0[i] <= 0) && (D_801778B0[i] != -2)) {
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, D_800D1A70[i - 1].x, D_800D1A70[i - 1].y, D_800D1A70[i - 1].z, 1);
- Matrix_Scale(D_8013B3C0, 0.68f, 0.68f, 1.0f, 1);
- Matrix_RotateZ(D_8013B3C0, M_PI / 4.0f, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, D_800D1A70[i - 1].x, D_800D1A70[i - 1].y, D_800D1A70[i - 1].z, 1);
+ Matrix_Scale(gGfxMatrix, 0.68f, 0.68f, 1.0f, 1);
+ Matrix_RotateZ(gGfxMatrix, M_PI / 4.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_500B600);
- Matrix_RotateZ(D_8013B3C0, 3.0f * M_PI / 2.0f, 1);
+ Matrix_RotateZ(gGfxMatrix, 3.0f * M_PI / 2.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_500B600);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
} else {
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, -234.0f, -167.0f, -600.0f, 1);
- Matrix_RotateZ(D_8013B3C0, M_PI / 4.0f, 1);
- Matrix_Scale(D_8013B3C0, 0.68f, 0.68f, 1.0f, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, -234.0f, -167.0f, -600.0f, 1);
+ Matrix_RotateZ(gGfxMatrix, M_PI / 4.0f, 1);
+ Matrix_Scale(gGfxMatrix, 0.68f, 0.68f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_500B600);
- Matrix_RotateZ(D_8013B3C0, 3.0f * M_PI / 2.0f, 1);
+ Matrix_RotateZ(gGfxMatrix, 3.0f * M_PI / 2.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_500B600);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
#else
@@ -472,9 +472,9 @@ void func_80088784(s32 arg0) {
arg0--;
func_800B8DD0(&gMasterDisp, 0x24);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, D_800D1DC8[arg0]);
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, 3.9f, -3.3f, -100.0f, 0);
- Matrix_Scale(D_8013B3C0, 0.37f, 0.37f, 0.37f, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, 3.9f, -3.3f, -100.0f, 0);
+ Matrix_Scale(gGfxMatrix, 0.37f, 0.37f, 0.37f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
if (D_80177C98 == 0) {
@@ -483,7 +483,7 @@ void func_80088784(s32 arg0) {
gSPDisplayList(gMasterDisp++, D_800D1D94[arg0]);
}
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
#else
@@ -495,7 +495,7 @@ void func_80088784(s32 arg0) {
void func_80089670(void) {
func_800B8DD0(&gMasterDisp, 0x3E);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
- Matrix_Scale(D_8013B3C0, 18.64f, 21.04f, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, 18.64f, 21.04f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1024AC0);
}
@@ -503,7 +503,7 @@ void func_80089670(void) {
void func_80089710(void) {
func_800B8DD0(&gMasterDisp, 0x3E);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
- Matrix_Scale(D_8013B3C0, 11.0f, 11.0f, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, 11.0f, 11.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1024AC0);
}
@@ -511,7 +511,7 @@ void func_80089710(void) {
void func_800897B0(void) {
func_800B8DD0(&gMasterDisp, 0x3E);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
- Matrix_Scale(D_8013B3C0, 130.0f, 130.0f, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, 130.0f, 130.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1024830);
}
@@ -519,7 +519,7 @@ void func_800897B0(void) {
void func_80089850(void) {
func_800B8DD0(&gMasterDisp, 0x3E);
gDPSetPrimColor(gMasterDisp++, 0, 0, 0, 0, 0, 255);
- Matrix_Scale(D_8013B3C0, 125.0f, 125.0f, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, 125.0f, 125.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_102A8A0);
}
@@ -527,7 +527,7 @@ void func_80089850(void) {
void func_800898F0(void) {
func_800B8DD0(&gMasterDisp, 1);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 208, 80, 255);
- Matrix_Scale(D_8013B3C0, 30.0f, 30.0f, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, 30.0f, 30.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_6004570);
}
@@ -552,7 +552,7 @@ void func_80089994(s32 arg0) {
func_800B8DD0(&gMasterDisp, 0x3E);
gDPSetPrimColor(gMasterDisp++, 0, 0, D_800D1E14[arg0][0], D_800D1E14[arg0][1], D_800D1E14[arg0][2],
D_800D1E14[arg0][3]);
- Matrix_Scale(D_8013B3C0, var_fv1, var_fv2, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, var_fv1, var_fv2, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1015510);
}
@@ -563,7 +563,7 @@ void func_80089994(s32 arg0) {
void func_80089AF4(void) {
func_800B8DD0(&gMasterDisp, 0x3E);
gDPSetPrimColor(gMasterDisp++, 0, 0, 0, 0, 0, 255);
- Matrix_Scale(D_8013B3C0, 54.0f, 54.0f, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, 54.0f, 54.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_F014180);
}
@@ -571,7 +571,7 @@ void func_80089AF4(void) {
void func_80089B94(void) {
func_800B8DD0(&gMasterDisp, 0x3E);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 92, 92, 255);
- Matrix_Scale(D_8013B3C0, 54.0f, 54.0f, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, 54.0f, 54.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_D0098B0);
}
@@ -589,7 +589,7 @@ void func_80089C38(void) {
alpha *= 255.0f / 10.0f;
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, alpha);
- Matrix_Scale(D_8013B3C0, 15.0f, 15.0f, 1.0f, 1);
+ Matrix_Scale(gGfxMatrix, 15.0f, 15.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1024230);
}
@@ -615,8 +615,8 @@ void func_80089D28(void) {
}
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, gb, gb, 255);
- Matrix_Translate(D_8013B3C0, 0.0f, -185.92001f, 0, 1);
- Matrix_Scale(D_8013B3C0, 3.55f, 0.13f, 1.0f, 1);
+ Matrix_Translate(gGfxMatrix, 0.0f, -185.92001f, 0, 1);
+ Matrix_Scale(gGfxMatrix, 3.55f, 0.13f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_1024230);
}
@@ -983,12 +983,12 @@ void func_8008BAE4(void) {
if ((D_80161788 != 0) || (D_8016178C != 0)) {
func_800B8DD0(&gMasterDisp, 0xC);
gDPSetPrimColor(gMasterDisp++, 0, 0, r, g, b, alpha);
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, -53.9f, -38.5f, -139.4f, 1);
- Matrix_Scale(D_8013B3C0, 1.0f, 1.0f, 1.0f, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, -53.9f, -38.5f, -139.4f, 1);
+ Matrix_Scale(gGfxMatrix, 1.0f, 1.0f, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_800D1A40);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
@@ -2053,7 +2053,7 @@ s32 func_80091DF4(Object_2F4* arg0) {
sp44.x = 0.0f;
sp44.y = 0.0f;
sp44.z = 100.0f;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp44, &sp38);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp44, &sp38);
func_8006EEFC(arg0->unk_0E4, arg0->obj.pos.x + (sp38.x * 1.5), arg0->obj.pos.y + (sp38.y * 1.5),
arg0->obj.pos.z + (sp38.z * 1.5), sp38.x, sp38.y, sp38.z, arg0->obj.rot.x, arg0->obj.rot.y,
arg0->obj.rot.z);
@@ -2080,7 +2080,7 @@ s32 func_80091F00(Object_2F4* arg0) {
func_80019218(0x2903300E, &arg0->unk_100, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
func_8007D10C(arg0->obj.pos.x, arg0->obj.pos.y, arg0->obj.pos.z, 1.5f);
- Matrix_RotateY(D_8013BBC8, arg0->unk_0F8 * M_DTOR, 0);
+ Matrix_RotateY(gCalcMatrix, arg0->unk_0F8 * M_DTOR, 0);
if (Rand_ZeroOne() < 0.5f) {
sp40.x = -20.0f;
@@ -2091,7 +2091,7 @@ s32 func_80091F00(Object_2F4* arg0) {
sp40.y = (Rand_ZeroOne() - 0.5f) * 20.0f;
sp40.z = 0.0f;
- Matrix_MultVec3fNoTranslate(D_8013BBC8, &sp40, &sp34);
+ Matrix_MultVec3fNoTranslate(gCalcMatrix, &sp40, &sp34);
arg0->unk_148 = sp34.x;
arg0->unk_14C = sp34.y;
diff --git a/src/main/timer.c b/src/main/timer.c
new file mode 100644
index 00000000..fa5ab6e0
--- /dev/null
+++ b/src/main/timer.c
@@ -0,0 +1,50 @@
+#include "global.h"
+
+TimerTask sTimerTasks[0x10];
+
+TimerTask* Timer_AllocateTask(void) {
+ s32 i;
+
+ for (i = 0; i < 0x10; i++) {
+ if (!sTimerTasks[i].active) {
+ return &sTimerTasks[i];
+ }
+ }
+ return NULL;
+}
+
+s32 Timer_CreateTask(u64 time, TimerAction action, s32* address, s32 value) {
+ TimerTask* task = Timer_AllocateTask();
+
+ if (task == NULL) {
+ return -1;
+ }
+ task->active = true;
+ task->action = action;
+ task->address = address;
+ task->value = value;
+ return osSetTimer(&task->timer, time, 0, &gTimerTaskMsgQueue, task);
+}
+
+void Timer_Increment(s32* address, s32 value) {
+ *address += value;
+}
+
+void Timer_SetValue(s32* address, s32 value) {
+ *address = value;
+}
+
+void Timer_CompleteTask(TimerTask* task) {
+ if (task->action != NULL) {
+ task->action(task->address, task->value);
+ }
+ task->active = false;
+}
+
+void Timer_Wait(u64 time) {
+ OSTimer timer;
+ OSMesg dummy;
+
+ osSetTimer(&timer, time, 0, &gTimerWaitMsgQueue, NULL);
+ osRecvMesg(&gTimerWaitMsgQueue, &dummy, OS_MESG_BLOCK);
+}
diff --git a/src/overlays/ovl_EBFBE0/EBFCA0.c b/src/overlays/ovl_EBFBE0/EBFCA0.c
index d087163c..32a8ee78 100644
--- a/src/overlays/ovl_EBFBE0/EBFCA0.c
+++ b/src/overlays/ovl_EBFBE0/EBFCA0.c
@@ -35,7 +35,7 @@ void func_EBFBE0_801875E0(void) {
D_EBFBE0_801B7BCC = 255.0f;
D_EBFBE0_801B7BC8 = 255.0f;
- func_80006F20();
+ Memory_FreeAll();
func_800A5D6C();
D_80178420 = 320.0f;
@@ -51,7 +51,7 @@ void func_EBFBE0_801875E0(void) {
func_8001DC6C(0, 0x16);
D_EBFBE0_801B82C4 = 1;
}
- D_800DD8B4 = 0x1E;
+ gStopInputTimer = 0x1E;
}
void func_EBFBE0_80187754(void) {
@@ -121,21 +121,21 @@ void func_EBFBE0_801878D8(void) {
case 0:
func_EBFBE0_801918FC();
func_EBFBE0_80189208();
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
func_EBFBE0_8018F680();
func_EBFBE0_8018F85C();
func_EBFBE0_8018FC14();
func_EBFBE0_8018F8E4();
func_EBFBE0_801918FC();
func_EBFBE0_8018F77C();
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
break;
case 1:
if (D_EBFBE0_801B8348 != 0) {
func_EBFBE0_801918FC();
func_EBFBE0_8018A2F8();
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
func_800BB5D0();
func_EBFBE0_80190C9C();
}
@@ -146,7 +146,7 @@ void func_EBFBE0_801878D8(void) {
case 2:
func_EBFBE0_801918FC();
func_EBFBE0_8018A990();
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
if (D_EBFBE0_801B8344 != 0) {
func_EBFBE0_8018FD08();
}
@@ -155,20 +155,20 @@ void func_EBFBE0_801878D8(void) {
case 3:
func_EBFBE0_801918FC();
func_EBFBE0_8018B038();
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
break;
case 4:
func_EBFBE0_801918FC();
func_EBFBE0_8018C114();
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
func_EBFBE0_80190C9C();
break;
case 5:
func_EBFBE0_801918FC();
func_EBFBE0_8018CB90();
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
break;
}
@@ -186,7 +186,7 @@ s32 func_EBFBE0_80187ABC(void) {
s32 i;
for (i = 0; i < 4; i++) {
- if (D_800DD8B0[i] == 1) {
+ if (gControllerStatus[i] == 1) {
ret = i;
break;
}
diff --git a/src/overlays/ovl_EBFBE0/fox_option.c b/src/overlays/ovl_EBFBE0/fox_option.c
index 4d70e100..838e9318 100644
--- a/src/overlays/ovl_EBFBE0/fox_option.c
+++ b/src/overlays/ovl_EBFBE0/fox_option.c
@@ -82,7 +82,7 @@ void func_EBFBE0_80191B20(void) {
if (i == 14) {
continue;
}
- if (!(D_80178870.save[0].save_00.unk_00[i].unk_6 & 1)) {
+ if (!(gSaveFile.save.data.unk_00[i].unk_6 & 1)) {
var_a1_2 = 0;
break;
}
@@ -121,24 +121,24 @@ void func_EBFBE0_80191B20(void) {
if (D_80161A34 == 8) {
D_80177B8C[D_80177B48 + 1] = 13;
if (D_800D3180[9] == 1) {
- D_80178870.save[0].save_00.unk_00[14].unk_5 = 1;
+ gSaveFile.save.data.unk_00[14].unk_5 = 1;
if (var_v0_2 != 0) {
- D_80178870.save[0].save_00.unk_00[14].unk_4 = 1;
+ gSaveFile.save.data.unk_00[14].unk_4 = 1;
} else {
- D_80178870.save[0].save_00.unk_00[14].unk_7 = 1;
+ gSaveFile.save.data.unk_00[14].unk_7 = 1;
}
- func_800C3084();
+ Save_Write();
} else if (D_800D3180[9] == 2) {
D_80177BB0[D_80177B48] = 1;
- D_80178870.save[0].save_00.unk_00[15].unk_5 = 1;
+ gSaveFile.save.data.unk_00[15].unk_5 = 1;
if (var_v0_2 != 0) {
- D_80178870.save[0].save_00.unk_00[15].unk_4 = 1;
- D_80178870.save[0].save_00.unk_00[15].unk_3 = 1;
+ gSaveFile.save.data.unk_00[15].unk_4 = 1;
+ gSaveFile.save.data.unk_00[15].unk_3 = 1;
} else {
- D_80178870.save[0].save_00.unk_00[15].unk_7 = 1;
- D_80178870.save[0].save_00.unk_00[15].unk_6 = 1;
+ gSaveFile.save.data.unk_00[15].unk_7 = 1;
+ gSaveFile.save.data.unk_00[15].unk_6 = 1;
}
- func_800C3084();
+ Save_Write();
}
}
@@ -195,7 +195,7 @@ void func_EBFBE0_80191B20(void) {
D_8017784C = 2;
- func_80006F20();
+ Memory_FreeAll();
D_80178420 = 320.0f;
D_80178424 = 240.0f;
@@ -376,7 +376,7 @@ void func_EBFBE0_80192340(void) {
if (D_EBFBE0_801B8280 != 0) {
func_EBFBE0_8019BDF0();
func_80084688(2, D_EBFBE0_801B8284);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
@@ -472,7 +472,7 @@ void func_EBFBE0_801928BC(void) {
D_8017783C = 2;
D_80177B40 = 0;
D_80177898 = 0;
- D_800DD8B4 = 3;
+ gStopInputTimer = 3;
} else {
D_80178340 += 0x20;
if (D_80178340 > 0xFF) {
@@ -492,7 +492,7 @@ void func_EBFBE0_80192938(void) {
D_80177CA0 = 0;
D_80177CB0 = 0.0f;
D_8017782C = 1;
- D_800DD8B4 = 3;
+ gStopInputTimer = 3;
func_8001DC6C(0, 28);
} else {
D_80178340 += 0x20;
@@ -510,7 +510,7 @@ void func_EBFBE0_801929F0(void) {
D_800D2870 = 0;
D_80161A38 = 0xFF;
- D_800DD8B4 = 0;
+ gStopInputTimer = 0;
D_80178410 = 800;
D_EBFBE0_801B9248 = 0;
@@ -568,7 +568,7 @@ void func_EBFBE0_80193864(void) {
}
func_EBFBE0_8019BBA4(D_EBFBE0_801AE638[D_EBFBE0_801B91A4].unk_4C);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
for (i = 0; i < 6; i++) {
if (!(D_EBFBE0_801AE638[i].unk_58) || (D_EBFBE0_801AE638[i].unk_00.unk_20) <= 0.0f) {
@@ -590,7 +590,7 @@ void func_EBFBE0_80193B04(void) {
s32 i;
D_80161A38 = 0xFF;
- D_800DD8B4 = 0;
+ gStopInputTimer = 0;
D_80178410 = 800;
if (D_EBFBE0_801B9248 == 0) {
@@ -641,7 +641,7 @@ void func_EBFBE0_801944F0(void) {
}
func_EBFBE0_8019BBA4(D_EBFBE0_801AE878[D_EBFBE0_801B91A8].unk_4C);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
for (i = 0; i < 3; i++) {
if ((D_EBFBE0_801AE878[i].unk_58 != 0) && !(D_EBFBE0_801AE878[i].unk_00.unk_20 <= 0.0f)) {
@@ -662,12 +662,12 @@ void func_EBFBE0_80194678(void) {
D_EBFBE0_801B91BC = 1;
D_EBFBE0_801B91A0 = 0;
- D_80177C74 = D_80178870.save[0].save_00.unk_14;
+ D_80177C74 = gSaveFile.save.data.unk_14;
func_800182F4(D_EBFBE0_801AE998[D_80177C74] | 0xE0000000);
- D_80177C80[0] = D_80178870.save[0].save_00.unk_15;
- D_80177C80[1] = D_80178870.save[0].save_00.unk_16;
- D_80177C80[2] = D_80178870.save[0].save_00.unk_17;
+ D_80177C80[0] = gSaveFile.save.data.unk_15;
+ D_80177C80[1] = gSaveFile.save.data.unk_16;
+ D_80177C80[2] = gSaveFile.save.data.unk_17;
if (D_80177C80[0] > 99) {
D_80177C80[0] = 99;
@@ -734,23 +734,23 @@ void func_EBFBE0_801948A8(void) {
}
// Test sound
- if (D_800DD898[D_80177AF8].button & R_TRIG) {
+ if (gChangedInput[D_80177AF8].button & R_TRIG) {
D_EBFBE0_801B9284 ^= 1;
func_8001D8F4(D_EBFBE0_801B9284);
}
- if (D_800DD898[D_80177AF8].button & A_BUTTON) {
+ if (gChangedInput[D_80177AF8].button & A_BUTTON) {
func_80019218(0x49000003, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
D_EBFBE0_801B9288 = (D_EBFBE0_801B9288 + 1) & 3;
}
- if (D_800DD898[D_80177AF8].button & B_BUTTON) {
+ if (gChangedInput[D_80177AF8].button & B_BUTTON) {
func_80019218(0x49000021, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
if (D_EBFBE0_801B9284 == 1) {
D_EBFBE0_801B9284 = 0;
func_8001D8F4(D_EBFBE0_801B9284);
}
- func_800C3084();
+ Save_Write();
D_80177898 = 0;
D_EBFBE0_801B9124 = 1000;
D_EBFBE0_801B912C = 0;
@@ -768,7 +768,7 @@ void func_EBFBE0_80194AEC(void) {
if (D_80177C74 >= 3) {
D_80177C74 = 0;
}
- D_80178870.save[0].save_00.unk_14 = D_80177C74;
+ gSaveFile.save.data.unk_14 = D_80177C74;
func_800182F4(D_EBFBE0_801AE998[D_80177C74] | 0xE0000000);
}
}
@@ -789,15 +789,15 @@ void func_EBFBE0_80194BD0(void) {
switch (D_EBFBE0_801B9288 - 1) {
case 0:
- D_80178870.save[0].save_00.unk_15 = var_v1;
+ gSaveFile.save.data.unk_15 = var_v1;
break;
case 1:
- D_80178870.save[0].save_00.unk_16 = var_v1;
+ gSaveFile.save.data.unk_16 = var_v1;
break;
case 2:
- D_80178870.save[0].save_00.unk_17 = var_v1;
+ gSaveFile.save.data.unk_17 = var_v1;
break;
}
func_8001D8A8(D_EBFBE0_801B924C, var_v1);
@@ -835,12 +835,12 @@ void func_EBFBE0_80195944(void) {
D_EBFBE0_801B931C = sp28;
}
- if (D_800DD898[D_80177AF8].button & A_BUTTON) {
+ if (gChangedInput[D_80177AF8].button & A_BUTTON) {
func_8001DA90(D_EBFBE0_801B931F);
D_EBFBE0_801B9320 = true;
}
- if (D_800DD898[D_80177AF8].button & B_BUTTON) {
+ if (gChangedInput[D_80177AF8].button & B_BUTTON) {
if (!D_EBFBE0_801B9320) {
func_80019218(0x49000021, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
func_8001D444(0, 0x24, 0, 0xFF);
@@ -857,7 +857,7 @@ void func_EBFBE0_80195944(void) {
}
// Spectrum Analizer mode selector
- if (D_800DD898[D_80177AF8].button & R_CBUTTONS) {
+ if (gChangedInput[D_80177AF8].button & R_CBUTTONS) {
spectrumAnalizerMode++;
if (spectrumAnalizerMode > 2) {
spectrumAnalizerMode = 0;
@@ -935,9 +935,9 @@ void func_EBFBE0_801962A4(void) {
if (temp_fv0 == 0.0f) {
D_EBFBE0_801B91CC = 3;
- D_80178870 = *(SaveFile*) &D_800D4D10;
+ gSaveFile = *(SaveFile*) &D_800D4D10;
- func_800C3084();
+ Save_Write();
D_EBFBE0_801B91AC = 0;
D_EBFBE0_801B91B0 = 0;
@@ -976,7 +976,7 @@ void func_EBFBE0_8019669C(void) {
if (1) {}
}
- if (D_800DD898[D_80177AF8].button & 0x8000) {
+ if (gChangedInput[D_80177AF8].button & 0x8000) {
if (D_EBFBE0_801B91CC == 3) {
func_80019218(0x49000021, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
D_EBFBE0_801B912C = 3;
@@ -995,7 +995,7 @@ void func_EBFBE0_8019669C(void) {
D_EBFBE0_801B912C = 4;
}
}
- } else if (D_800DD898[D_80177AF8].button & 0x4000) {
+ } else if (gChangedInput[D_80177AF8].button & 0x4000) {
if (D_EBFBE0_801B91CC == 1) {
func_80019218(0x4900101D, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
D_EBFBE0_801B912C = 2;
@@ -1036,7 +1036,7 @@ void func_EBFBE0_80196E54(void) {
void func_EBFBE0_80196EFC(void) {
func_EBFBE0_80196FC4();
- if (D_800DD898[D_80177AF8].button & B_BUTTON) {
+ if (gChangedInput[D_80177AF8].button & B_BUTTON) {
func_80019218(0x49000021, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
D_80177898 = 0;
D_EBFBE0_801B9124 = 1000;
@@ -1051,7 +1051,7 @@ void func_EBFBE0_80196F9C(void) {
}
void func_EBFBE0_80196FC4(void) {
- if (D_800DD898[D_80177AF8].button & A_BUTTON) {
+ if (gChangedInput[D_80177AF8].button & A_BUTTON) {
func_80019218(0x49000003, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
D_EBFBE0_801B93E0 ^= 1;
}
@@ -1189,7 +1189,7 @@ void func_EBFBE0_8019752C(void) {
func_EBFBE0_80197A3C(i, 41, var_fs0);
func_EBFBE0_80197D30(i, 75, var_fs0 - 25.0f);
func_EBFBE0_80197DE4(i, 130, (var_fs0 - 26.0f));
- func_EBFBE0_801AD7EC(210, (var_fs0 - 24.0f), D_80178870.save[0].save_00.unk_40[i]);
+ func_EBFBE0_801AD7EC(210, (var_fs0 - 24.0f), gSaveFile.save.data.unk_40[i]);
func_EBFBE0_80197F74(i, 258, var_fs0 - 25.0f);
}
func_EBFBE0_80198164(i, var_fs0, var_fs1);
@@ -1200,7 +1200,7 @@ void func_EBFBE0_8019752C(void) {
func_EBFBE0_8019BDF0();
func_EBFBE0_80197914();
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
func_800B8DD0(&gMasterDisp, 0x4C);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
@@ -1244,12 +1244,12 @@ void func_EBFBE0_80197914(void) {
func_800B8DD0(&gMasterDisp, 0);
for (i = 0, vec1 = &D_EBFBE0_801AF100, vec2 = &D_EBFBE0_801AF118; i < 2; i++, vec1++, vec2++) {
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, vec1->x, vec1->y, -500.0f, 1);
- Matrix_Scale(D_8013B3C0, vec2->x, vec2->y, 1.0f, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, vec1->x, vec1->y, -500.0f, 1);
+ Matrix_Scale(gGfxMatrix, vec2->x, vec2->y, 1.0f, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_EBFBE0_801AEF30);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
}
@@ -1295,9 +1295,9 @@ void func_EBFBE0_80197D30(s32 arg0, s32 arg1, s32 arg2) {
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
- temp[0] = D_80178870.save[0].save_00.unk_18[arg0][0] & 0xFF;
- temp[1] = D_80178870.save[0].save_00.unk_18[arg0][1] & 0xFF;
- temp[2] = D_80178870.save[0].save_00.unk_18[arg0][2] & 0xFF;
+ temp[0] = gSaveFile.save.data.unk_18[arg0][0] & 0xFF;
+ temp[1] = gSaveFile.save.data.unk_18[arg0][1] & 0xFF;
+ temp[2] = gSaveFile.save.data.unk_18[arg0][2] & 0xFF;
temp[3] = 0;
func_800A0094(arg1, arg2, 1.0f, 1.0f, temp);
@@ -1331,7 +1331,7 @@ void func_EBFBE0_80197F74(s32 arg0, s32 arg1, s32 arg2) {
void func_EBFBE0_80198164(s32 arg0, f32 arg1, f32 arg2) {
f32 temp = 16.0f;
- s32 temp_s2 = D_80178870.save[0].save_00.unk_36[arg0];
+ s32 temp_s2 = gSaveFile.save.data.unk_36[arg0];
f32 var_fs2;
s32 i;
@@ -1364,8 +1364,8 @@ void func_EBFBE0_801982B0(s32 arg0, s32 arg1, f32 arg2, f32 arg3, s32 arg4) {
g = 255;
r = 255;
if (arg1 < (arg4 - 1)) {
- temp1 = D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_8 & 15;
- temp2 = D_80178870.save[0].save_00.unk_5E[arg0][arg1 + 1].unk_8 & 15;
+ temp1 = gSaveFile.save.data.unk_5E[arg0][arg1].unk_8 & 15;
+ temp2 = gSaveFile.save.data.unk_5E[arg0][arg1 + 1].unk_8 & 15;
temp_v0 = func_EBFBE0_80199284(temp1, temp2);
@@ -1406,8 +1406,8 @@ void func_EBFBE0_801984D0(s32 arg0, s32 arg1, f32 arg2, f32 arg3) {
if ((arg3 > 22.0f) && (arg3 < 162.0f)) {
func_800B8DD0(&gMasterDisp, 0x53);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
- sp1C = (D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_C & 1) << 8;
- sp1C |= D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_0;
+ sp1C = (gSaveFile.save.data.unk_5E[arg0][arg1].unk_C & 1) << 8;
+ sp1C |= gSaveFile.save.data.unk_5E[arg0][arg1].unk_0;
func_8009FEA0(arg2 + 15.0f - (func_8008BCBC(sp1C) - 1) * 8, arg3 + 24.0f + 1.0f, sp1C);
}
}
@@ -1420,9 +1420,9 @@ void func_EBFBE0_80198608(s32 arg0, s32 arg1, f32 arg2, f32 arg3) {
if ((arg3 > 12.0f) && (arg3 < 154.0f)) {
func_800B8DD0(&gMasterDisp, 0x53);
- sp90[0] = D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_D & 1;
- sp90[1] = D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_F & 1;
- sp90[2] = D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_E & 1;
+ sp90[0] = gSaveFile.save.data.unk_5E[arg0][arg1].unk_D & 1;
+ sp90[1] = gSaveFile.save.data.unk_5E[arg0][arg1].unk_F & 1;
+ sp90[2] = gSaveFile.save.data.unk_5E[arg0][arg1].unk_E & 1;
for (var_fs1 = 0.0f, i = 0; i < 3; i++, var_fs1 += 9.0f) {
if (sp90[i] == 0) {
@@ -1440,7 +1440,7 @@ void func_EBFBE0_8019882C(s32 arg0, s32 arg1, f32 arg2, f32 arg3) {
f32 temp2;
if (arg3 > 58.0f && arg3 < 197.0f) {
- temp = D_80178870.save[0].save_00.unk_5E[arg0][arg1].unk_8 & 0x0f;
+ temp = gSaveFile.save.data.unk_5E[arg0][arg1].unk_8 & 0x0f;
sp20 = D_EBFBE0_801AEEAC[temp];
func_800B8DD0(&gMasterDisp, 0x53);
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
@@ -1453,12 +1453,12 @@ void func_EBFBE0_8019882C(s32 arg0, s32 arg1, f32 arg2, f32 arg3) {
void func_EBFBE0_80199198(f32 arg0, f32 arg1, f32 arg2) {
func_800B8DD0(&gMasterDisp, 0x35);
- Matrix_Push(&D_8013B3C0);
- Matrix_Translate(D_8013B3C0, arg0 - D_EBFBE0_801AF140, arg1 + D_EBFBE0_801AF144, arg2, 1);
- Matrix_Scale(D_8013B3C0, D_EBFBE0_801AF13C, D_EBFBE0_801AF13C, D_EBFBE0_801AF13C, 1);
+ Matrix_Push(&gGfxMatrix);
+ Matrix_Translate(gGfxMatrix, arg0 - D_EBFBE0_801AF140, arg1 + D_EBFBE0_801AF144, arg2, 1);
+ Matrix_Scale(gGfxMatrix, D_EBFBE0_801AF13C, D_EBFBE0_801AF13C, D_EBFBE0_801AF13C, 1);
Matrix_SetGfxMtx(&gMasterDisp);
gSPDisplayList(gMasterDisp++, D_601D1F0);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
}
s32 func_EBFBE0_80199284(s32 arg0, s32 arg1) {
@@ -1499,7 +1499,7 @@ void func_EBFBE0_8019978C(void) {
func_EBFBE0_80199EA8();
for (i = 0; i < 4; i++) {
- if (D_800DD8B0[i] == 1) {
+ if (gControllerStatus[i] == 1) {
func_EBFBE0_80199820(i);
}
}
@@ -1675,15 +1675,15 @@ void func_EBFBE0_8019CBC0(void) {
D_EBFBE0_801B911C = 0.0f;
D_EBFBE0_801B9120 = 70.0f;
- temp = D_80178870.save[0].save_00.unk_EA & 0xFF;
+ temp = gSaveFile.save.data.unk_EA & 0xFF;
if (temp < 10) {
D_EBFBE0_801B9098 = 3;
D_EBFBE0_801B9138 = 1;
- D_EBFBE0_801B9150[0][0] = D_80178870.save[0].save_00.unk_18[temp][0] & 0xFF;
- D_EBFBE0_801B9150[1][0] = D_80178870.save[0].save_00.unk_18[temp][1] & 0xFF;
- D_EBFBE0_801B9150[2][0] = D_80178870.save[0].save_00.unk_18[temp][2] & 0xFF;
+ D_EBFBE0_801B9150[0][0] = gSaveFile.save.data.unk_18[temp][0] & 0xFF;
+ D_EBFBE0_801B9150[1][0] = gSaveFile.save.data.unk_18[temp][1] & 0xFF;
+ D_EBFBE0_801B9150[2][0] = gSaveFile.save.data.unk_18[temp][2] & 0xFF;
for (i = 0; i < 3; i++) {
D_EBFBE0_801B90A0[i] = func_EBFBE0_8019DCE8(D_EBFBE0_801B9150[i][0]);
@@ -1764,7 +1764,7 @@ void func_EBFBE0_8019DD44(void) {
void func_EBFBE0_8019DE74(void) {
func_EBFBE0_8019715C();
- if (D_800DD898[D_80177AF8].button & 0xD00E) { // START, A, B, C-UP, C-LEFT, C-DOWN
+ if (gChangedInput[D_80177AF8].button & 0xD00E) { // START, A, B, C-UP, C-LEFT, C-DOWN
func_80019218(0x49000003, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
D_80177898 = 0;
@@ -1787,7 +1787,7 @@ void func_EBFBE0_8019DF64(void) {
func_EBFBE0_8019752C();
func_EBFBE0_8019BDF0();
func_EBFBE0_8019BAB8(D_EBFBE0_801AE638[3].unk_38);
- Matrix_Pop(&D_8013B3C0);
+ Matrix_Pop(&gGfxMatrix);
func_EBFBE0_8019C120(D_EBFBE0_801AE638[3].unk_00);
}
@@ -1819,7 +1819,7 @@ void func_EBFBE0_8019E030(void) {
break;
case 2:
- if ((D_EBFBE0_801B9178 == 0) && (D_800DD898[D_80177AF8].button & 0xD00E)) {
+ if ((D_EBFBE0_801B9178 == 0) && (gChangedInput[D_80177AF8].button & 0xD00E)) {
func_80019218(0x19031083, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C);
D_EBFBE0_801B9090 = 1;
D_EBFBE0_801B9178 = 60;
diff --git a/yamls/us/header.yaml b/yamls/us/header.yaml
index 145ed9cc..6b46cfb4 100644
--- a/yamls/us/header.yaml
+++ b/yamls/us/header.yaml
@@ -19,6 +19,8 @@ options:
symbol_addrs_path:
- linker_scripts/us/symbol_addrs.txt
- linker_scripts/us/symbol_addrs_libultra.txt
+ - linker_scripts/us/symbol_addrs_nlib_funcs.txt
+ - linker_scripts/us/symbol_addrs_nlib_vars.txt
- linker_scripts/us/symbol_addrs_assets.txt
- linker_scripts/us/symbol_addrs_overlays.txt
- linker_scripts/us/symbol_addrs_EBFBE0.txt
diff --git a/yamls/us/main.yaml b/yamls/us/main.yaml
index 254e5aeb..a7901baf 100644
--- a/yamls/us/main.yaml
+++ b/yamls/us/main.yaml
@@ -11,17 +11,16 @@
- [0x02010, textbin, f3dex]
# Nintendo libraries
- - [0x03440, c, 3440]
- - [0x03A80, c, 3A80]
- - [0x03FE0, c, 3FE0]
- - [0x041D0, c, 41D0]
- - [0x04650, c, 4650]
+ - [0x03440, c, joybus]
+ - [0x03A80, c, lib]
+ - [0x041D0, c, lights]
+ - [0x04650, c, main]
- [0x05A20, c, math]
- [0x06280, c, matrix]
- - [0x07B20, c, 7B20]
- - [0x07B60, c, 7B60]
- - [0x07D30, c, 7D30]
- - [0x07FC0, c, 7FC0]
+ - [0x07B20, c, memory]
+ - [0x07B60, c, timer]
+ - [0x07D30, c, save]
+ - [0x07FC0, c, fault]
# Audio block
- [0x08CC0, c, 8CC0]
- [0x0C870, c, C870]
@@ -188,7 +187,7 @@
- [0xBB360, c, sf_BB360]
- [0xBD360, c, sf_versus]
- [0xC3430, c, sf_C3430]
- - [0xC3BB0, c, sf_C3BB0]
+ - [0xC3BB0, c, fox_save]
# DATA - Microcode
- [0xC3EE0, data, aspmain]
@@ -196,10 +195,10 @@
- [0xC49D0, data, f3dex]
# DATA - Nintendo Libraries
- - [0xC51D0, .data, 4650]
+ - [0xC51D0, .data, main]
- [0xC51E0, .data, math]
- [0xC5220, .data, matrix]
- - [0xC52F0, data, 7FC0]
+ - [0xC52F0, .data, fault]
- [0xC54D0, data, audio]
- [0xC8880, data, sprintf]
@@ -226,8 +225,8 @@
# RODATA - Nintendo Libraries
- [0xC8CC0, .rodata, math]
- [0xC8D10, .rodata, matrix]
- - [0xC8D20, .rodata, 7D30]
- - [0xC8E40, .rodata, 7FC0]
+ - [0xC8D20, .rodata, save]
+ - [0xC8E40, .rodata, fault]
- [0xC9220, .rodata, 8CC0]
- [0xC9260, .rodata, C870]
- [0xC9280, .rodata, F0A0]
@@ -248,7 +247,9 @@
- [0xCA180, .rodata, ../libultra/libc/xldtob]
- [0xCA1E0, rodata, ../libultra/os/setintmask]
- [0xCA260, .rodata, ../libultra/rmon/rmonmem]
- - [0xCA5A0, .rodata, ../libultra/rmon/rmonbrk]
+ - [0xCA3D0, .rodata, ../libultra/rmon/rmonmisc]
+ - [0xCA400, .rodata, ../libultra/rmon/rmonregs]
+ - [0xCA480, .rodata, ../libultra/rmon/rmonbrk]
- [0xCA650, rodata, ../libultra/rmon/rmonrcp]
# DATA - game engine
@@ -301,21 +302,21 @@
- [0xD97F0, .rodata, sf_BB360]
- [0xD9E50, .rodata, sf_versus]
- [0xD9F60, .rodata, sf_C3430]
- - [0xDA030, .rodata, sf_C3BB0]
+ - [0xDA030, .rodata, fox_save]
# Common assets
- [0xDA0A0, data, displists]
- [0xDC710, data, audiodata]
# Nintendo Library bss
- - { start: 0xDE480, type: bss, vram: 0x800DD880, name: 3440 }
- - { start: 0xDE480, type: bss, vram: 0x800DDAA0, name: 4650 }
- - { start: 0xDE480, type: bss, vram: 0x8013B3A0, name: math }
- - { start: 0xDE480, type: bss, vram: 0x8013B3C0, name: matrix }
- - { start: 0xDE480, type: bss, vram: 0x8013C3D0, name: 7B20 }
- - { start: 0xDE480, type: bss, vram: 0x80144BE0, name: 7B60 }
- - { start: 0xDE480, type: bss, vram: 0x80144F60, name: 7D30 }
- - { start: 0xDE480, type: bss, vram: 0x80145360, name: 7FC0 }
+ - { start: 0xDE480, type: .bss, vram: 0x800DD880, name: joybus }
+ - { start: 0xDE480, type: .bss, vram: 0x800DDAA0, name: main }
+ - { start: 0xDE480, type: .bss, vram: 0x8013B3A0, name: math }
+ - { start: 0xDE480, type: .bss, vram: 0x8013B3C0, name: matrix }
+ - { start: 0xDE480, type: .bss, vram: 0x8013C3D0, name: memory }
+ - { start: 0xDE480, type: .bss, vram: 0x80144BE0, name: timer }
+ - { start: 0xDE480, type: .bss, vram: 0x80144F60, name: save }
+ - { start: 0xDE480, type: .bss, vram: 0x80145360, name: fault }
- { start: 0xDE480, type: bss, vram: 0x80145D40, name: audio }
@@ -347,3 +348,4 @@
# Game engine bss
- { start: 0xDE480, type: bss, vram: 0x8015F900, name: engine }
+ - { start: 0xDE480, type: .bss, vram: 0x80178870, name: fox_save }