From d32854ced18eb334bbba4e2e67074bae641688c2 Mon Sep 17 00:00:00 2001 From: petrie911 <69443847+petrie911@users.noreply.github.com> Date: Fri, 24 Nov 2023 13:11:20 -0600 Subject: [PATCH] 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 --- .vscode/settings.json | 4 +- Makefile | 2 +- include/functions.h | 47 +- include/global.h | 14 +- include/structs.h | 47 +- include/variables.h | 117 ++-- linker_scripts/us/symbol_addrs.txt | 128 +--- linker_scripts/us/symbol_addrs_nlib_funcs.txt | 124 ++++ linker_scripts/us/symbol_addrs_nlib_vars.txt | 121 ++++ src/libultra/rmon/rmonbrk.c | 2 + src/libultra/rmon/rmonmisc.c | 2 + src/libultra/rmon/rmonregs.c | 2 + src/main/3440.c | 157 ----- src/main/3FE0.c | 42 -- src/main/7B20.c | 15 - src/main/7B60.c | 51 -- src/main/{7FC0.c => fault.c} | 146 +++-- src/main/fox_save.c | 61 ++ src/main/joybus.c | 147 +++++ src/main/{3A80.c => lib.c} | 67 ++- src/main/{41D0.c => lights.c} | 14 +- src/main/{4650.c => main.c} | 311 +++++----- src/main/math.c | 41 +- src/main/matrix.c | 16 +- src/main/memory.c | 15 + src/main/{7D30.c => save.c} | 26 +- src/main/sf_59780.c | 12 +- src/main/sf_5A0F0.c | 4 +- src/main/sf_5A2C0.c | 550 +++++++++--------- src/main/sf_61B30.c | 86 +-- src/main/sf_A24B0.c | 32 +- src/main/sf_C3BB0.c | 72 --- src/main/sf_hud.c | 68 +-- src/main/timer.c | 50 ++ src/overlays/ovl_EBFBE0/EBFCA0.c | 20 +- src/overlays/ovl_EBFBE0/fox_option.c | 140 ++--- yamls/us/header.yaml | 2 + yamls/us/main.yaml | 50 +- 38 files changed, 1455 insertions(+), 1350 deletions(-) create mode 100644 linker_scripts/us/symbol_addrs_nlib_funcs.txt create mode 100644 linker_scripts/us/symbol_addrs_nlib_vars.txt delete mode 100644 src/main/3440.c delete mode 100644 src/main/3FE0.c delete mode 100644 src/main/7B20.c delete mode 100644 src/main/7B60.c rename src/main/{7FC0.c => fault.c} (68%) create mode 100644 src/main/fox_save.c create mode 100644 src/main/joybus.c rename src/main/{3A80.c => lib.c} (54%) rename src/main/{41D0.c => lights.c} (83%) rename src/main/{4650.c => main.c} (57%) create mode 100644 src/main/memory.c rename src/main/{7D30.c => save.c} (64%) delete mode 100644 src/main/sf_C3BB0.c create mode 100644 src/main/timer.c 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 Controller_Init(void); +void Controller_UpdateInput(void); +void Controller_ReadData(void); +void Save_ReadData(void); +void Save_WriteData(void); +void Controller_Rumble(void); +void Lib_Perspective(Gfx** dList); +void Lib_Ortho(Gfx** dList); +void Lib_DmaRead(void* src, void* dst, s32 size); +void Lib_FillScreen(u8 setFill); -void func_8000372C(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG, s32 colB, s32 ambR, s32 ambG, s32 ambB); -void func_800038AC(Gfx** dList, s32 dir1x, s32 dir1y, s32 dir1z, s32 dir2x, s32 dir2y, s32 dir2z, s32 col1r, s32 col1g, +void Lights_SetOneLight(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG, s32 colB, s32 ambR, s32 ambG, s32 ambB); +void Lights_SetTwoLights(Gfx** dList, s32 dir1x, s32 dir1y, s32 dir1z, s32 dir2x, s32 dir2y, s32 dir2z, s32 col1r, s32 col1g, s32 col1b, s32 col2r, s32 col2g, s32 col2b, s32 ambR, s32 ambG, s32 ambB); f32 Math_ModF(f32 value, f32 mod); void Rand_Init(void); @@ -48,18 +48,18 @@ void Matrix_GetXYZAngles(Matrix*, Vec3f*); void Matrix_LookAt(Matrix*, f32, f32, f32, f32, f32, f32, f32, f32, f32, u8); void Matrix_SetGfxMtx(Gfx**); -s32 func_80006FD8(u64 arg0, void* arg2, s32* arg3, s32 arg4); +s32 Timer_CreateTask(u64, TimerAction, s32*, s32); -void func_80006F20(void); -void* func_80006F38(s32); +void Memory_FreeAll(void); +void* Memory_Allocate(s32); -void func_80007068(s32* arg0, s32 arg1); -void func_8000707C(s32* arg0, s32 arg1); -void func_80007088(UnkStruct_func_80007088*); -void func_800070C8(u64); +void Timer_Increment(s32* address, s32 value); +void Timer_SetValue(s32* address, s32 value); +void Timer_CompleteTask(TimerTask*); +void Timer_Wait(u64); -s32 func_800071FC(SaveFile*); -s32 func_800072E0(SaveFile*); +s32 Save_WriteEeprom(SaveFile*); +s32 Save_ReadEeprom(SaveFile*); void Fault_ThreadEntry(void*); void func_80007FE4(FrameBuffer*, u16, u16); @@ -136,6 +136,7 @@ s64 __ll_rshift(s64, s64); void func_8002E3E0(Object_2F4 *arg0); void func_8002E548(void); +void func_8002F5F4(void); void func_8003DAF0(void); void func_8003DE68(s32, s32); void func_80040CDC(void); @@ -305,8 +306,8 @@ void func_800C20B0(void); void func_800C2190(void); u16 func_800C2890(u16*); s32 func_800C2F30(u16*, s32); -s32 func_800C3084(void); -s32 func_800C3194(void); +s32 Save_Write(void); +s32 Save_Read(void); void func_EFFA40_80187520(s32, void*); 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; + /* 0x00 */ union { + SaveData data; + u8 raw[sizeof(SaveData)]; + }; + /* 0xFE */ u16 checksum; +} Save; -typedef union { - /* 0x00 */ Save_00 save_00; - /* 0x00 */ Checksum checksum; -} Save; // size = 0x100 - -typedef union { - Save save[2]; - u8 raw[EEPROM_BLOCK_SIZE*EEPROM_MAXBLOCKS]; +typedef struct { + /* 0x000 */ Save save; + /* 0x100 */ Save backup; } SaveFile; // size = 0x200 typedef struct { 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 u16 gFillScreenColor; +extern u16 gFillScreen; -extern OSThread sIdleThread; // 80138E90 -extern u8 sIdleThreadStack[0x1000]; // 801390A0 -extern OSThread gMainThread; // 8013A040 -extern u8 sMainThreadStack[0x1000]; // 8013A1F0 -extern OSThread gAudioThread; //8013B1F0 +// extern OSThread sIdleThread; // 80138E90 +// extern u8 sIdleThreadStack[0x1000]; // 801390A0 +// extern OSThread gMainThread; // 8013A040 +// extern u8 sMainThreadStack[0x1000]; // 8013A1F0 +// extern OSThread gAudioThread; //8013B1F0 -extern Matrix* D_8013B3C0; -extern Matrix D_8013B3C8[0x20]; -extern Matrix* D_8013BBC8; -extern Matrix D_8013BBD0[0x20]; +extern Matrix* gGfxMatrix; +extern Matrix sGfxMatrixStack[0x20]; +extern Matrix* gCalcMatrix; +extern Matrix sCalcMatrixStack[0x20]; -extern SaveFile D_80144F60; -extern SaveFile D_80145160; +extern SaveFile gSaveIOBuffer; +extern SaveFile sPrevSaveData; extern FaultMgr gFaultMgr; extern OSMesg D_80156600[1]; @@ -464,7 +463,7 @@ extern f32 D_80178740; extern s32 D_80178754; extern s32 D_80178758; extern s32 D_80178768[]; -extern SaveFile D_80178870; +extern SaveFile gSaveFile; extern u16 D_Tex_800D99F8[]; extern u16 D_Tex_800DBA20[]; @@ -550,7 +549,7 @@ extern s32 D_EBFEB0_801ADA94; extern u8 D_80281000[0x400]; extern u8 D_80281400[0xC00]; -extern FrameBuffer D_80282000; // z buffer +extern FrameBuffer gZBuffer; // z buffer extern u8 D_802A7800; extern u8 D_802D7800; extern s32 D_80387800; 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 similarity index 68% rename from src/main/7FC0.c rename to 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 similarity index 54% rename from src/main/3A80.c rename to 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 similarity index 83% rename from src/main/41D0.c rename to 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 similarity index 57% rename from src/main/4650.c rename to 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 similarity index 64% rename from src/main/7D30.c rename to 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_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(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_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 }