mirror of
https://github.com/HarbourMasters/Starship
synced 2026-09-03 02:53:52 -04:00
Non-audio threads. Some data importation. (#17)
* threads galore * something's up * try this * I don't even * who knows * I can't stop it * let's try data for fun * ok I think I've gone far enough * well maybe a little more * visual assets somewhat documented * just keeps going * forgot formatting
This commit is contained in:
@@ -67,7 +67,7 @@ void guLookAtF(float mf[4][4], float xEye, float yEye, float zEye, float xAt, fl
|
||||
|
||||
void guLookAt(Mtx* m, float xEye, float yEye, float zEye, float xAt, float yAt, float zAt, float xUp, float yUp,
|
||||
float zUp) {
|
||||
Matrix mf;
|
||||
float mf[4][4];
|
||||
|
||||
guLookAtF(mf, xEye, yEye, zEye, xAt, yAt, zAt, xUp, yUp, zUp);
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ void guOrthoF(float mf[4][4], float l, float r, float b, float t, float n, float
|
||||
}
|
||||
|
||||
void guOrtho(Mtx* m, float l, float r, float b, float t, float n, float f, float scale) {
|
||||
Matrix mf;
|
||||
float mf[4][4];
|
||||
|
||||
guOrthoF(mf, l, r, b, t, n, f, scale);
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
extern s32 __osContinitialized;
|
||||
|
||||
#define USEC_TO_CYCLES(n, clock) ((n) * (u64) (clock) / 1000000)
|
||||
#define USEC_TO_CYCLES_OLD(n, clock) ((n) * (u64) (clock) / 1000000)
|
||||
|
||||
s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data) {
|
||||
OSMesg dummy;
|
||||
@@ -20,9 +20,9 @@ s32 osContInit(OSMesgQueue* mq, u8* bitpattern, OSContStatus* data) {
|
||||
__osContinitialized = 1;
|
||||
t = osGetTime();
|
||||
|
||||
if (t < USEC_TO_CYCLES(500000, osClockRate)) {
|
||||
if (t < USEC_TO_CYCLES_OLD(500000, osClockRate)) {
|
||||
osCreateMesgQueue(&timerMesgQueue, &dummy, 1);
|
||||
osSetTimer(&mytimer, USEC_TO_CYCLES(500000, osClockRate) - t, 0, &timerMesgQueue, &dummy);
|
||||
osSetTimer(&mytimer, USEC_TO_CYCLES_OLD(500000, osClockRate) - t, 0, &timerMesgQueue, &dummy);
|
||||
osRecvMesg(&timerMesgQueue, &dummy, OS_MESG_BLOCK);
|
||||
}
|
||||
__osMaxControllers = 4;
|
||||
|
||||
@@ -63,7 +63,7 @@ s32 osMotorStart(OSPfs* pfs) {
|
||||
}
|
||||
|
||||
void _MakeMotorData(s32 channel, u16 address, u8* buffer, OSPifRam* mdata) {
|
||||
u8* ptr = mdata->ramarray;
|
||||
u8* ptr = (u8*) mdata->ramarray;
|
||||
__OSContRamReadFormat ramreadformat;
|
||||
s32 i;
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
#include "piint.h"
|
||||
#include "PR/rdb.h"
|
||||
|
||||
void ramromMain(void* /*arg*/);
|
||||
extern char piEventBuf[];
|
||||
void ramromMain(void* arg);
|
||||
extern OSMesg piEventBuf[];
|
||||
extern OSMesgQueue piEventQueue;
|
||||
extern OSThread piThread;
|
||||
extern char piThreadStack[];
|
||||
@@ -22,7 +22,7 @@ void osCreatePiMgr(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt)
|
||||
return;
|
||||
}
|
||||
osCreateMesgQueue(cmdQ, cmdBuf, cmdMsgCnt);
|
||||
osCreateMesgQueue(&piEventQueue, (OSMesg*) piEventBuf, 1);
|
||||
osCreateMesgQueue(&piEventQueue, piEventBuf, 1);
|
||||
|
||||
if (!__osPiAccessQueueEnabled) {
|
||||
__osPiCreateAccessQueue();
|
||||
@@ -60,9 +60,9 @@ void osCreatePiMgr(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt)
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/pimgr/osCreatePiMgr.s")
|
||||
#endif
|
||||
|
||||
extern char freeRamromBuf[];
|
||||
extern OSMesg freeRamromBuf[];
|
||||
extern OSMesgQueue freeRamromQ;
|
||||
extern char getRamromBuf[];
|
||||
extern OSMesg getRamromBuf[];
|
||||
extern OSMesgQueue getRamromQ;
|
||||
|
||||
void ramromMain(void* arg) {
|
||||
@@ -71,8 +71,10 @@ void ramromMain(void* arg) {
|
||||
|
||||
osCreateMesgQueue(&getRamromQ, getRamromBuf, 1);
|
||||
osCreateMesgQueue(&freeRamromQ, freeRamromBuf, 1);
|
||||
osSetEventMesg(18 /*OS_EVENT_RDB_REQ_RAMROM*/, &getRamromQ, NULL);
|
||||
osSetEventMesg(19 /*OS_EVENT_RDB_FREE_RAMROM*/, &freeRamromQ, NULL);
|
||||
|
||||
// For some reason the compiler thinks these macros are undefined
|
||||
osSetEventMesg(18 /* OS_EVENT_RDB_REQ_RAMROM */, &getRamromQ, NULL);
|
||||
osSetEventMesg(19 /*OS_EVENT_RDB_FREE_RAMROM */, &freeRamromQ, NULL);
|
||||
|
||||
while (TRUE) {
|
||||
osRecvMesg(&getRamromQ, NULL, OS_MESG_BLOCK);
|
||||
|
||||
@@ -3,10 +3,13 @@
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/__rmonregs_LoadStoreSU.s")
|
||||
|
||||
void __rmonregs_LoadStoreSU(int opcode, int regno);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/LoadStoreVU.s")
|
||||
|
||||
void SetUpForRCPop(int isVector);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/SetUpForRCPop.s")
|
||||
|
||||
void CleanupFromRCPop(int isVector);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/CleanupFromRCPop.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/__rmonGetGRegisters.s")
|
||||
@@ -26,7 +29,7 @@ s32 rmonGetRcpRegister(s32 arg0) {
|
||||
SetUpForRCPop(0);
|
||||
__rmonregs_LoadStoreSU(0x2B, arg0);
|
||||
__rmonStepRCP();
|
||||
ret = __rmonReadWordAt(0x04000000);
|
||||
ret = __rmonReadWordAt((u32*) SP_DMEM_START);
|
||||
CleanupFromRCPop(0);
|
||||
return ret;
|
||||
}
|
||||
|
||||
+6
-6
@@ -47,7 +47,7 @@ void func_8000291C(void) {
|
||||
u8 sp1F;
|
||||
s32 i;
|
||||
|
||||
osContInit(&D_800E2128, &sp1F, &D_800DD8F0);
|
||||
osContInit(&D_800E2128, &sp1F, D_800DD8F0);
|
||||
for (i = 0; i < 4; i++) {
|
||||
D_800DD8B0[i] = (sp1F >> i) & 1;
|
||||
D_800DD8B8[i] = 0;
|
||||
@@ -84,7 +84,7 @@ void func_80002AF4(void) {
|
||||
osRecvMesg(&D_800E2128, NULL, 1);
|
||||
osContGetReadData(D_800DD8C0);
|
||||
}
|
||||
osSendMesg(&D_800E22F8, 16, 0);
|
||||
osSendMesg(&D_800E22F8, (OSMesg) 16, 0);
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3440/func_80002AF4.s")
|
||||
@@ -92,18 +92,18 @@ void func_80002AF4(void) {
|
||||
|
||||
void func_80002BE8(void) {
|
||||
if ((D_80137E80 == 0) && (func_800072E0(&D_80144F60) == 0)) {
|
||||
osSendMesg(&D_800E2318, 15, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) 15, 0);
|
||||
return;
|
||||
}
|
||||
osSendMesg(&D_800E2318, 14, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) 14, 0);
|
||||
}
|
||||
|
||||
void func_80002C50(void) {
|
||||
if ((D_80137E80 == 0) && (func_800071FC(&D_80144F60) == 0)) {
|
||||
osSendMesg(&D_800E2318, 15, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) 15, 0);
|
||||
return;
|
||||
}
|
||||
osSendMesg(&D_800E2318, 14, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) 14, 0);
|
||||
}
|
||||
|
||||
void func_80002CB8(void) {
|
||||
|
||||
+135
-7
@@ -4,16 +4,144 @@ s32 func_80002E80(char* dst, char* fmt, va_list args) {
|
||||
return vsprintf(dst, fmt, args);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_80002EA0.s")
|
||||
void func_80002EA0(s32 arg0, void (**arg1)(s32, s32), s32 arg2, s32 arg3) {
|
||||
void (*temp)(s32, s32) = arg1[arg0];
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_80002EE4.s")
|
||||
temp(arg2, arg3);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_80002F88.s")
|
||||
void func_80002EE4(u8* buf1, u8* buf2, s32 len) {
|
||||
s32 i;
|
||||
u8 temp;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_8000316C.s")
|
||||
for (i = 0; i < len; i++) {
|
||||
temp = buf2[i];
|
||||
buf2[i] = buf1[i];
|
||||
buf1[i] = temp;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_800032B4.s")
|
||||
typedef s32 (*CompareFunc)(void*, void*);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_800033E0.s")
|
||||
void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
|
||||
u32 splitIdx;
|
||||
u8* last;
|
||||
u8* right;
|
||||
u8* left;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3A80/func_800034E8.s")
|
||||
while (1) {
|
||||
last = first + (curLen - 1) * size;
|
||||
|
||||
if (curLen == 2) {
|
||||
if (cFunc(first, last) > 0) {
|
||||
func_80002EE4(first, last, size);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (size && size && size) {} //! FAKE: must be here with at least 3 && operands.
|
||||
left = first;
|
||||
right = last - size;
|
||||
|
||||
while (1) {
|
||||
while (cFunc(left, last) < 0) {
|
||||
left += size;
|
||||
}
|
||||
while ((cFunc(right, last) >= 0) && (left < right)) {
|
||||
right -= size;
|
||||
}
|
||||
if (left >= right) {
|
||||
break;
|
||||
}
|
||||
func_80002EE4(left, right, size);
|
||||
left += size;
|
||||
right -= size;
|
||||
}
|
||||
func_80002EE4(last, left, size);
|
||||
splitIdx = (left - first) / size;
|
||||
if (curLen / 2 < splitIdx) {
|
||||
if ((curLen - splitIdx) > 2) {
|
||||
func_80002F88(left + size, curLen - splitIdx - 1, size, cFunc);
|
||||
}
|
||||
|
||||
if (splitIdx < 2) {
|
||||
return;
|
||||
}
|
||||
left = first;
|
||||
curLen = splitIdx;
|
||||
} else {
|
||||
if (splitIdx >= 2) {
|
||||
func_80002F88(first, splitIdx, size, cFunc);
|
||||
}
|
||||
|
||||
if ((curLen - splitIdx) <= 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
first = left + size;
|
||||
curLen -= splitIdx + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8000316C(Gfx** dList) {
|
||||
u16 norm;
|
||||
|
||||
guPerspective(gGfxMtx, &norm, D_80161A3C, 1.3333334f, D_80161A40, D_80161A44, 1.0f);
|
||||
gSPPerspNormalize((*dList)++, norm);
|
||||
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);
|
||||
func_80005680(D_8013B3C0, &gIdentityMatrix);
|
||||
}
|
||||
|
||||
void func_800032B4(Gfx** dList) {
|
||||
void* temp_t0;
|
||||
void* temp_t0_2;
|
||||
|
||||
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);
|
||||
func_80005680(D_8013B3C0, &gIdentityMatrix);
|
||||
}
|
||||
|
||||
void func_800033E0(u32 var_s2, u8* var_s1, s32 var_s0) {
|
||||
osInvalICache(var_s1, var_s0);
|
||||
osInvalDCache(var_s1, var_s0);
|
||||
while (var_s0 > 0x100) {
|
||||
osPiStartDma(&D_800E2110, 0, 0, var_s2, var_s1, 0x100, &D_800E20F0);
|
||||
var_s0 -= 0x100;
|
||||
var_s2 += 0x100;
|
||||
var_s1 += 0x100;
|
||||
osRecvMesg(&D_800E20F0, NULL, 1);
|
||||
}
|
||||
if (var_s0 != 0) {
|
||||
osPiStartDma(&D_800E2110, 0, 0, var_s2, var_s1, var_s0, &D_800E20F0);
|
||||
osRecvMesg(&D_800E20F0, NULL, 1);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
+81
-4
@@ -1,7 +1,84 @@
|
||||
#include "common.h"
|
||||
#include "global.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/41D0/func_800035D0.s")
|
||||
void func_800035D0(Gfx** dList) {
|
||||
gSPNumLights((*dList)++, 7);
|
||||
gSPLight((*dList)++, &gLight->l[0], 1);
|
||||
gSPLight((*dList)++, &gLight->l[1], 2);
|
||||
gSPLight((*dList)++, &gLight->l[2], 3);
|
||||
gSPLight((*dList)++, &gLight->l[3], 4);
|
||||
gSPLight((*dList)++, &gLight->l[4], 5);
|
||||
gSPLight((*dList)++, &gLight->l[5], 6);
|
||||
gSPLight((*dList)++, &gLight->l[6], 7);
|
||||
gSPLight((*dList)++, &gLight->a, 8);
|
||||
gLight++;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/41D0/func_8000372C.s")
|
||||
void func_8000372C(Gfx** dList, s32 dirX, s32 dirY, s32 dirZ, s32 colR, s32 colG, s32 colB, s32 ambR, s32 ambG,
|
||||
s32 ambB) {
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/41D0/func_800038AC.s")
|
||||
for (i = 0; i < 4; i++) {
|
||||
gLight->l[i].l.dir[0] = dirX;
|
||||
gLight->l[i].l.dir[1] = dirY;
|
||||
gLight->l[i].l.dir[2] = dirZ;
|
||||
gLight->l[i].l.col[0] = colR;
|
||||
gLight->l[i].l.col[1] = colG;
|
||||
gLight->l[i].l.col[2] = colB;
|
||||
gLight->l[i].l.colc[0] = colR;
|
||||
gLight->l[i].l.colc[1] = colG;
|
||||
gLight->l[i].l.colc[2] = colB;
|
||||
}
|
||||
for (i = 4; i < 7; i++) {
|
||||
gLight->l[i].l.dir[0] = dirX;
|
||||
gLight->l[i].l.dir[1] = dirY;
|
||||
gLight->l[i].l.dir[2] = dirZ;
|
||||
gLight->l[i].l.col[0] = 0;
|
||||
gLight->l[i].l.col[1] = 0;
|
||||
gLight->l[i].l.col[2] = 0;
|
||||
gLight->l[i].l.colc[0] = 0;
|
||||
gLight->l[i].l.colc[1] = 0;
|
||||
gLight->l[i].l.colc[2] = 0;
|
||||
}
|
||||
gLight->a.l.col[0] = ambR;
|
||||
gLight->a.l.col[1] = ambG;
|
||||
gLight->a.l.col[2] = ambB;
|
||||
gLight->a.l.colc[0] = ambR;
|
||||
gLight->a.l.colc[1] = ambG;
|
||||
gLight->a.l.colc[2] = ambB;
|
||||
func_800035D0(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) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
gLight->l[i].l.dir[0] = dir1x;
|
||||
gLight->l[i].l.dir[1] = dir1y;
|
||||
gLight->l[i].l.dir[2] = dir1z;
|
||||
gLight->l[i].l.col[0] = col1r;
|
||||
gLight->l[i].l.col[1] = col1g;
|
||||
gLight->l[i].l.col[2] = col1b;
|
||||
gLight->l[i].l.colc[0] = col1r;
|
||||
gLight->l[i].l.colc[1] = col1g;
|
||||
gLight->l[i].l.colc[2] = col1b;
|
||||
}
|
||||
for (i = 4; i < 7; i++) {
|
||||
gLight->l[i].l.dir[0] = dir2x;
|
||||
gLight->l[i].l.dir[1] = dir2y;
|
||||
gLight->l[i].l.dir[2] = dir2z;
|
||||
gLight->l[i].l.col[0] = col2r;
|
||||
gLight->l[i].l.col[1] = col2g;
|
||||
gLight->l[i].l.col[2] = col2b;
|
||||
gLight->l[i].l.colc[0] = col2r;
|
||||
gLight->l[i].l.colc[1] = col2g;
|
||||
gLight->l[i].l.colc[2] = col2b;
|
||||
}
|
||||
gLight->a.l.col[0] = ambR;
|
||||
gLight->a.l.col[1] = ambG;
|
||||
gLight->a.l.col[2] = ambB;
|
||||
gLight->a.l.colc[0] = ambR;
|
||||
gLight->a.l.colc[1] = ambG;
|
||||
gLight->a.l.colc[2] = ambB;
|
||||
func_800035D0(dList);
|
||||
}
|
||||
|
||||
+392
-30
@@ -1,60 +1,422 @@
|
||||
#include "global.h"
|
||||
|
||||
void func_800034E8(s32);
|
||||
s32 func_80003A50(void);
|
||||
void func_80003B48(void*);
|
||||
void Audio_ThreadEntry(void* /*arg0*/);
|
||||
void func_80003EE0(void);
|
||||
void func_80003FEC(void*);
|
||||
void func_800040D4(void*);
|
||||
void func_80004144(void*);
|
||||
void func_80004ABC(void*);
|
||||
void func_80003FEC(void* /*arg0*/);
|
||||
void func_800040D4(void* /*arg0*/);
|
||||
void Graphics_ThreadEntry(void* /*arg0*/);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80003A50.s")
|
||||
void func_80004560(void);
|
||||
void func_80004714(void);
|
||||
void func_80004798(void);
|
||||
void func_80004824(void);
|
||||
void func_800049D4(void);
|
||||
void func_80007088(void*);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80003B48.s")
|
||||
s32 D_800C45D0 = 1;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80003C50.s")
|
||||
void func_80003A50(void) {
|
||||
u8 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80003DC0.s")
|
||||
D_80137E78 = 0;
|
||||
D_80137E7C = 0;
|
||||
D_80137E80 = 0;
|
||||
D_80137E81 = 0;
|
||||
D_80137E88 = 0;
|
||||
D_80137E8A = 0;
|
||||
gCurrentTask = NULL;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80003EE0.s")
|
||||
for (i = 0; i < ARRAY_COUNT(D_800E1FB4); i += 1) {
|
||||
D_800E1FB4[i] = NULL;
|
||||
}
|
||||
for (i = 0; i < ARRAY_COUNT(D_800E1FB8); i += 1) {
|
||||
D_800E1FB8[i] = NULL;
|
||||
}
|
||||
for (i = 0; i < 1; i += 1) {
|
||||
D_800E1FC0[i] = NULL;
|
||||
}
|
||||
for (i = 0; i < ARRAY_COUNT(D_800E1FC8); i += 1) {
|
||||
D_800E1FC8[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80003FEC.s")
|
||||
void Audio_ThreadEntry(void* arg0) {
|
||||
SPTask* temp_v0;
|
||||
|
||||
// https://decomp.me/scratch/vo7No Random Nops missing
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_800040D4.s")
|
||||
func_8000FFCC();
|
||||
func_8001DCE0();
|
||||
temp_v0 = func_8001DF50();
|
||||
if (temp_v0 != NULL) {
|
||||
temp_v0->msgQueue = &D_800E2258;
|
||||
temp_v0->msg = (OSMesg) 1;
|
||||
osWritebackDCacheAll();
|
||||
osSendMesg(&D_800E21E0, temp_v0, 0);
|
||||
}
|
||||
while (1) {
|
||||
temp_v0 = func_8001DF50();
|
||||
if (temp_v0 != NULL) {
|
||||
temp_v0->msgQueue = &D_800E2258;
|
||||
temp_v0->msg = (OSMesg) 1;
|
||||
osWritebackDCacheAll();
|
||||
}
|
||||
osRecvMesg(&D_800E2258, NULL, 0);
|
||||
if (temp_v0 != NULL) {
|
||||
osSendMesg(&D_800E21E0, temp_v0, 0);
|
||||
}
|
||||
osRecvMesg(&D_800E2238, NULL, 1);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80004144.s")
|
||||
void func_80003C50(void) {
|
||||
gGfxTask->msgQueue = &D_800E22A0;
|
||||
gGfxTask->msg = (OSMesg) 2;
|
||||
gGfxTask->task.t.type = M_GFXTASK;
|
||||
gGfxTask->task.t.flags = 0;
|
||||
gGfxTask->task.t.ucode_boot = __rspboot_start;
|
||||
gGfxTask->task.t.ucode_boot_size = (uintptr_t) __rspboot_end - (uintptr_t) __rspboot_start;
|
||||
gGfxTask->task.t.ucode = __f3dex_start;
|
||||
gGfxTask->task.t.ucode_size = 0x1000;
|
||||
gGfxTask->task.t.ucode_data = (u64*) &gF3dexData;
|
||||
gGfxTask->task.t.ucode_data_size = 0x800;
|
||||
gGfxTask->task.t.dram_stack = (u64*) &D_80281000;
|
||||
gGfxTask->task.t.dram_stack_size = 0x400;
|
||||
gGfxTask->task.t.output_buff = (u64*) &D_802A7800;
|
||||
gGfxTask->task.t.output_buff_size = (u64*) &D_802D7800;
|
||||
gGfxTask->task.t.data_ptr = (u64*) gGfxPool->masterDL;
|
||||
gGfxTask->task.t.data_size = (gMasterDisp - gGfxPool->masterDL) * sizeof(Gfx);
|
||||
gGfxTask->task.t.yield_data_ptr = (u64*) &D_80281400;
|
||||
gGfxTask->task.t.yield_data_size = OS_YIELD_DATA_SIZE;
|
||||
osWritebackDCacheAll();
|
||||
osSendMesg(&D_800E21E0, gGfxTask, 0);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80004560.s")
|
||||
void func_80003DC0(u32 arg0) {
|
||||
gGfxPool = &gGfxPools[arg0 % 2];
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80004714.s")
|
||||
gGfxTask = &gGfxPool->task;
|
||||
gViewport = gGfxPool->viewports;
|
||||
gGfxMtx = gGfxPool->mtx;
|
||||
gUnkDisp1 = gGfxPool->unkDL1;
|
||||
gMasterDisp = gGfxPool->masterDL;
|
||||
gUnkDisp2 = gGfxPool->unkDL2;
|
||||
gLight = gGfxPool->lights;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80004798.s")
|
||||
gFrameBuffer = &gFrameBuffers[arg0 % 3];
|
||||
D_80137E74 = &D_80387800;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80004824.s")
|
||||
D_8013B3C0 = D_8013B3C8;
|
||||
D_8013BBC8 = D_8013BBD0;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_800049D4.s")
|
||||
D_80178710 = &D_80178580;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/4650/func_80004ABC.s")
|
||||
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;
|
||||
}
|
||||
switch (osTvType) {
|
||||
case 0:
|
||||
osViSetMode(&osViModePalLan1);
|
||||
break;
|
||||
case 2:
|
||||
osViSetMode(&osViModeMpalLan1);
|
||||
break;
|
||||
default:
|
||||
case 1:
|
||||
osViSetMode(&osViModeNtscLan1);
|
||||
break;
|
||||
}
|
||||
if (D_800C45D0 != 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);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80004D00(void* arg0) {
|
||||
osCreateViManager(254);
|
||||
void func_80003FEC(void* arg0) {
|
||||
s32 sp34;
|
||||
|
||||
func_8000291C();
|
||||
while (1) {
|
||||
osRecvMesg(&D_800E22C0, (OSMesg) &sp34, 1);
|
||||
switch (sp34) {
|
||||
case 0xA:
|
||||
func_80002AF4();
|
||||
break;
|
||||
case 0xB:
|
||||
func_80002BE8();
|
||||
break;
|
||||
case 0xC:
|
||||
func_80002C50();
|
||||
break;
|
||||
case 0xD:
|
||||
func_80002CB8();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_800040D4(void* arg0) {
|
||||
void* sp24;
|
||||
|
||||
while (1) {
|
||||
osRecvMesg(&D_800E2338, &sp24, 1);
|
||||
func_80007088(sp24);
|
||||
}
|
||||
}
|
||||
|
||||
void Graphics_ThreadEntry(void* arg0) {
|
||||
u8 i;
|
||||
u8 var_v1;
|
||||
u8 var_v2;
|
||||
|
||||
func_800A18B0();
|
||||
osSendMesg(&D_800E22C0, (OSMesg) 10, 0);
|
||||
func_80003DC0(D_80137E7C);
|
||||
{
|
||||
gSPSegment(gUnkDisp1++, 0, 0);
|
||||
gSPDisplayList(gMasterDisp++, gGfxPool->unkDL1);
|
||||
func_800A26C0();
|
||||
gSPEndDisplayList(gUnkDisp1++);
|
||||
gSPEndDisplayList(gUnkDisp2++);
|
||||
gSPDisplayList(gMasterDisp++, gGfxPool->unkDL2);
|
||||
gDPFullSync(gMasterDisp++);
|
||||
gSPEndDisplayList(gMasterDisp++);
|
||||
}
|
||||
func_80003C50();
|
||||
while (1) {
|
||||
D_80137E7C++;
|
||||
func_80003DC0(D_80137E7C);
|
||||
osRecvMesg(&D_800E22F8, NULL, 1);
|
||||
osSendMesg(&D_800E22C0, (OSMesg) 13, 0);
|
||||
func_800029A8();
|
||||
osSendMesg(&D_800E22C0, (OSMesg) 10, 0);
|
||||
if (D_800DD8AA & 0x800) {
|
||||
func_80003EE0();
|
||||
}
|
||||
{
|
||||
gSPSegment(gUnkDisp1++, 0, 0);
|
||||
gSPDisplayList(gMasterDisp++, gGfxPool->unkDL1);
|
||||
func_800A26C0();
|
||||
if (D_80137E80 == 1) {
|
||||
func_800BC4B0();
|
||||
}
|
||||
gSPEndDisplayList(gUnkDisp1++);
|
||||
gSPEndDisplayList(gUnkDisp2++);
|
||||
gSPDisplayList(gMasterDisp++, gGfxPool->unkDL2);
|
||||
gDPFullSync(gMasterDisp++);
|
||||
gSPEndDisplayList(gMasterDisp++);
|
||||
}
|
||||
osRecvMesg(&D_800E22A0, NULL, 1);
|
||||
func_80003C50();
|
||||
if (D_80137E8A == 0) {
|
||||
osViSwapBuffer(&gFrameBuffers[(D_80137E7C - 1) % 3]);
|
||||
}
|
||||
func_80007FE4(&gFrameBuffers[(D_80137E7C - 1) % 3], 320, 16);
|
||||
|
||||
var_v1 = MIN(D_80137E78, 4);
|
||||
var_v2 = MAX(var_v1, D_800E2278.validCount + 1);
|
||||
for (i = 0; i < var_v2; i += 1) { // Can't be ++
|
||||
osRecvMesg(&D_800E2278, NULL, 1);
|
||||
}
|
||||
|
||||
func_8001DECC();
|
||||
}
|
||||
}
|
||||
|
||||
void func_80004560(void) {
|
||||
osCreateMesgQueue(&D_800E20F0, D_800E2108, ARRAY_COUNT(D_800E2108));
|
||||
osCreateMesgQueue(&D_800E21E0, 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(&D_800E2128, D_800E2140, ARRAY_COUNT(D_800E2140));
|
||||
osSetEventMesg(OS_EVENT_SI, &D_800E2128, (OSMesg) 0);
|
||||
osCreateMesgQueue(&D_800E2148, D_800E2160, ARRAY_COUNT(D_800E2160));
|
||||
osViSetEvent(&D_800E2148, (OSMesg) 3, 1);
|
||||
osSetEventMesg(OS_EVENT_SP, &D_800E2148, (OSMesg) 1);
|
||||
osSetEventMesg(OS_EVENT_DP, &D_800E2148, (OSMesg) 2);
|
||||
osSetEventMesg(OS_EVENT_PRENMI, &D_800E2148, (OSMesg) 4);
|
||||
osCreateMesgQueue(&D_800E2338, D_800E2350, ARRAY_COUNT(D_800E2350));
|
||||
osCreateMesgQueue(&D_800E2390, D_800E23A8, ARRAY_COUNT(D_800E23A8));
|
||||
osCreateMesgQueue(&D_800E22C0, D_800E22D8, ARRAY_COUNT(D_800E22D8));
|
||||
osCreateMesgQueue(&D_800E22F8, D_800E2310, ARRAY_COUNT(D_800E2310));
|
||||
osCreateMesgQueue(&D_800E2318, D_800E2330, ARRAY_COUNT(D_800E2330));
|
||||
}
|
||||
|
||||
void func_80004714(void) {
|
||||
SPTask** var_v1 = D_800E1FB8;
|
||||
u8 i;
|
||||
|
||||
if ((*var_v1)->msgQueue != NULL) {
|
||||
osSendMesg((*var_v1)->msgQueue, (*var_v1)->msg, 0);
|
||||
}
|
||||
(*var_v1)->state = SPTASK_STATE_FINISHED_DP;
|
||||
for (i = 0; i < 1; i += 1, var_v1++) {
|
||||
*var_v1 = *(var_v1 + 1);
|
||||
}
|
||||
*var_v1 = NULL;
|
||||
}
|
||||
|
||||
void func_80004798(void) {
|
||||
SPTask* task = gCurrentTask;
|
||||
|
||||
gCurrentTask = NULL;
|
||||
if (task->state == SPTASK_STATE_INTERRUPTED) {
|
||||
if (osSpTaskYielded(&task->task) == 0) {
|
||||
task->state = SPTASK_STATE_FINISHED;
|
||||
}
|
||||
} else {
|
||||
task->state = SPTASK_STATE_FINISHED;
|
||||
if (task->task.t.type == M_AUDTASK) {
|
||||
if (task->msgQueue != NULL) {
|
||||
osSendMesg(task->msgQueue, task->msg, 0);
|
||||
}
|
||||
D_800E1FB4[0] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80004824(void) {
|
||||
u8 i;
|
||||
SPTask** var_a0;
|
||||
SPTask** var_a1;
|
||||
SPTask** var_s0_2;
|
||||
SPTask** var_s1_2;
|
||||
void* sp40;
|
||||
SPTask* sp3C;
|
||||
|
||||
var_s0_2 = D_800E1FC0;
|
||||
var_s1_2 = D_800E1FC8;
|
||||
for (i = 0; i < 1; i += 1) {
|
||||
*(var_s0_2++) = NULL;
|
||||
}
|
||||
for (i = 0; i < ARRAY_COUNT(D_800E1FC8); i += 1) {
|
||||
*(var_s1_2++) = NULL;
|
||||
}
|
||||
|
||||
var_s0_2 = D_800E1FC0;
|
||||
var_s1_2 = D_800E1FC8;
|
||||
while (osRecvMesg(&D_800E21E0, &sp40, 0) != -1) {
|
||||
sp3C = (SPTask*) sp40;
|
||||
sp3C->state = SPTASK_STATE_NOT_STARTED;
|
||||
|
||||
switch (sp3C->task.t.type) {
|
||||
case 2:
|
||||
*(var_s0_2++) = sp3C;
|
||||
break;
|
||||
case 1:
|
||||
*(var_s1_2++) = sp3C;
|
||||
break;
|
||||
}
|
||||
}
|
||||
var_s0_2 = D_800E1FC0;
|
||||
var_s1_2 = D_800E1FC8;
|
||||
var_a0 = D_800E1FB4;
|
||||
var_a1 = D_800E1FB8;
|
||||
|
||||
for (i = 0; i < 1; i += 1, var_a0++) {
|
||||
if (*var_a0 == NULL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (i; i < 1; i += 1) {
|
||||
*(var_a0++) = *(var_s0_2++);
|
||||
}
|
||||
for (i = 0; i < 2; i += 1, var_a1++) {
|
||||
if (*var_a1 == NULL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (i; i < 2; i += 1) {
|
||||
*(var_a1++) = *(var_s1_2++);
|
||||
}
|
||||
}
|
||||
|
||||
void func_800049D4(void) {
|
||||
if (D_800E1FB4[0] != NULL) {
|
||||
if (gCurrentTask != NULL) {
|
||||
if (gCurrentTask->task.t.type == M_GFXTASK) {
|
||||
gCurrentTask->state = SPTASK_STATE_INTERRUPTED;
|
||||
osSpTaskYield();
|
||||
}
|
||||
} else {
|
||||
gCurrentTask = D_800E1FB4[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];
|
||||
osDpSetStatus(DPC_CLR_TMEM_CTR | DPC_CLR_PIPE_CTR | DPC_CLR_CMD_CTR | DPC_CLR_CLOCK_CTR);
|
||||
osSpTaskLoad(&gCurrentTask->task);
|
||||
osSpTaskStartGo(&gCurrentTask->task);
|
||||
gCurrentTask->state = SPTASK_STATE_RUNNING;
|
||||
}
|
||||
}
|
||||
|
||||
void Main_ThreadEntry(void* arg0) {
|
||||
s32 sp54;
|
||||
|
||||
osCreateThread(&gAudioThread, THREAD_ID_AUDIO, Audio_ThreadEntry, arg0,
|
||||
gAudioThreadStack + sizeof(gAudioThreadStack), 80);
|
||||
osStartThread(&gAudioThread);
|
||||
osCreateThread(&gGraphicsThread, THREAD_ID_GRAPHICS, Graphics_ThreadEntry, arg0,
|
||||
gGraphicsThreadStack + sizeof(gGraphicsThreadStack), 40);
|
||||
osStartThread(&gGraphicsThread);
|
||||
osCreateThread(&gUnkThread3, THREAD_ID_7, func_800040D4, arg0, gUnkThread3Stack + sizeof(gUnkThread3Stack), 60);
|
||||
osStartThread(&gUnkThread3);
|
||||
osCreateThread(&gUnkThread4, THREAD_ID_8, func_80003FEC, arg0, gUnkThread4Stack + sizeof(gUnkThread4Stack), 20);
|
||||
osStartThread(&gUnkThread4);
|
||||
|
||||
func_80004560();
|
||||
|
||||
while (true) {
|
||||
osRecvMesg(&D_800E2148, (OSMesg) &sp54, 1);
|
||||
switch ((u8) sp54) {
|
||||
case 3:
|
||||
osSendMesg(&D_800E2238, (OSMesg) 3, 0);
|
||||
osSendMesg(&D_800E2278, (OSMesg) 3, 0);
|
||||
func_80004824();
|
||||
break;
|
||||
case 1:
|
||||
func_80004798();
|
||||
break;
|
||||
case 2:
|
||||
func_80004714();
|
||||
break;
|
||||
case 4:
|
||||
D_80137E80 = 1;
|
||||
break;
|
||||
}
|
||||
if (D_80137E81 == 0) {
|
||||
func_800049D4();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Idle_ThreadEntry(void* arg0) {
|
||||
osCreateViManager(OS_PRIORITY_VIMGR);
|
||||
func_80003EE0();
|
||||
func_800034E8(1);
|
||||
osCreatePiMgr(150, &D_800E2010, &D_800E2028, 50);
|
||||
osCreateThread(&D_8013A040, 3, &func_80004ABC, arg0, &D_8013B1F0, 100);
|
||||
osStartThread(&D_8013A040);
|
||||
osCreatePiMgr(OS_PRIORITY_PIMGR, &gPiMgrCmdQueue, sPiMgrCmdBuff, ARRAY_COUNT(sPiMgrCmdBuff));
|
||||
osCreateThread(&gMainThread, THREAD_ID_MAIN, &Main_ThreadEntry, arg0, sMainThreadStack + sizeof(sMainThreadStack),
|
||||
100);
|
||||
osStartThread(&gMainThread);
|
||||
func_80008018();
|
||||
osSetThreadPri(0, 0);
|
||||
osSetThreadPri(NULL, OS_PRIORITY_IDLE);
|
||||
loop_1:
|
||||
goto loop_1;
|
||||
}
|
||||
|
||||
void bootproc(void) {
|
||||
func_8001EF10();
|
||||
RdRam_CheckIPL3();
|
||||
osInitialize();
|
||||
func_80003A50();
|
||||
osCreateThread(&D_80138E90, 1, &func_80004D00, 0, &D_8013A040, 255);
|
||||
osStartThread(&D_80138E90);
|
||||
osCreateThread(&sIdleThread, THREAD_ID_IDLE, &Idle_ThreadEntry, NULL, sIdleThreadStack + sizeof(sIdleThreadStack),
|
||||
255);
|
||||
osStartThread(&sIdleThread);
|
||||
}
|
||||
|
||||
+1
-1
@@ -124,7 +124,7 @@ f32 Math_FactorialF(f32 n) {
|
||||
return out;
|
||||
}
|
||||
|
||||
extern f32 D_800C45E0[];
|
||||
f32 D_800C45E0[] = { 1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600 };
|
||||
|
||||
f32 Math_Factorial(s32 n) {
|
||||
f32 out;
|
||||
|
||||
+55
-2
@@ -1,7 +1,60 @@
|
||||
#include "global.h"
|
||||
|
||||
// https://decomp.me/scratch/8H8k4 100%
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005680.s")
|
||||
Mtx gIdentityMtx = { {
|
||||
{ 0x00010000, 0, 1, 0 },
|
||||
{ 0, 0x00010000, 0, 1 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
} };
|
||||
|
||||
Matrix gIdentityMatrix = { {
|
||||
{ 1.0f, 0.0f, 0.0f, 0.0f },
|
||||
{ 0.0f, 1.0f, 0.0f, 0.0f },
|
||||
{ 0.0f, 0.0f, 1.0f, 0.0f },
|
||||
{ 0.0f, 0.0f, 0.0f, 1.0f },
|
||||
} };
|
||||
|
||||
Vec3f D_800C46A0 = { 0.0f, 0.0f, 0.0f };
|
||||
Vec3f D_800C46AC = { 0.0f, 0.0f, 1.0f };
|
||||
Vec3f D_800C46B8 = { 1.0f, 0.0f, 0.0f };
|
||||
Vec3f D_800C46C4 = { 0.0f, 0.0f, 0.0f };
|
||||
Vec3f D_800C46D0 = { 1.0f, 0.0f, 0.0f };
|
||||
Vec3f D_800C46DC = { 0.0f, 1.0f, 0.0f };
|
||||
|
||||
void func_80005680(Matrix* dst, Matrix* src) {
|
||||
dst->m[0][0] = src->m[0][0];
|
||||
dst->m[0][1] = src->m[0][1];
|
||||
dst->m[0][2] = src->m[0][2];
|
||||
dst->m[0][3] = src->m[0][3];
|
||||
dst->m[1][0] = src->m[1][0];
|
||||
dst->m[1][1] = src->m[1][1];
|
||||
dst->m[1][2] = src->m[1][2];
|
||||
dst->m[1][3] = src->m[1][3];
|
||||
dst->m[2][0] = src->m[2][0];
|
||||
dst->m[2][1] = src->m[2][1];
|
||||
dst->m[2][2] = src->m[2][2];
|
||||
dst->m[2][3] = src->m[2][3];
|
||||
dst->m[3][0] = src->m[3][0];
|
||||
dst->m[3][1] = src->m[3][1];
|
||||
dst->m[3][2] = src->m[3][2];
|
||||
dst->m[3][3] = src->m[3][3];
|
||||
// dst->xx = src->xx;
|
||||
// dst->yx = src->yx;
|
||||
// dst->zx = src->zx;
|
||||
// dst->wx = src->wx;
|
||||
// dst->xy = src->xy;
|
||||
// dst->yy = src->yy;
|
||||
// dst->zy = src->zy;
|
||||
// dst->wy = src->wy;
|
||||
// dst->xz = src->xz;
|
||||
// dst->yz = src->yz;
|
||||
// dst->zz = src->zz;
|
||||
// dst->wz = src->wz;
|
||||
// dst->xw = src->xw;
|
||||
// dst->yw = src->yw;
|
||||
// dst->zw = src->zw;
|
||||
// dst->ww = src->ww;
|
||||
}
|
||||
|
||||
void func_80005708(Matrix** mtx) {
|
||||
func_80005680(*mtx + 1, *mtx);
|
||||
|
||||
+39
-13
@@ -1,15 +1,18 @@
|
||||
#include "common.h"
|
||||
#include "global.h"
|
||||
|
||||
typedef void (*unkFunc_80007088)(s32, s32);
|
||||
|
||||
typedef struct {
|
||||
s8 unk0;
|
||||
char pad_0[0x27];
|
||||
void* unk28;
|
||||
u8 unk0;
|
||||
OSTimer unk8;
|
||||
unkFunc_80007088 unk28;
|
||||
s32 unk2C;
|
||||
s32 unk30;
|
||||
} UnkStruct_func_80007088;
|
||||
|
||||
extern s32 D_8013C3D0;
|
||||
extern s32 D_80144BD0;
|
||||
extern UnkStruct_func_80007088 D_80144BE0[];
|
||||
|
||||
void func_80006F20(void) {
|
||||
D_80144BD0 = (s32) &D_8013C3D0;
|
||||
@@ -22,10 +25,30 @@ s32 func_80006F38(s32 arg0) {
|
||||
return tmp;
|
||||
}
|
||||
|
||||
// https://decomp.me/scratch/uf9Ap 98.50%
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7B20/func_80006F60.s")
|
||||
UnkStruct_func_80007088* func_80006F60(void) {
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7B20/func_80006FD8.s")
|
||||
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, &D_800E2338, temp_v0);
|
||||
}
|
||||
|
||||
void func_80007068(s32* arg0, s32 arg1) {
|
||||
*arg0 += arg1;
|
||||
@@ -36,13 +59,16 @@ void func_8000707C(s32* arg0, s32 arg1) {
|
||||
}
|
||||
|
||||
void func_80007088(UnkStruct_func_80007088* arg0) {
|
||||
void (*temp_v0)(s32, s32);
|
||||
|
||||
temp_v0 = arg0->unk28;
|
||||
if (temp_v0 != NULL) {
|
||||
temp_v0(arg0->unk2C, arg0->unk30);
|
||||
if (arg0->unk28 != NULL) {
|
||||
arg0->unk28(arg0->unk2C, arg0->unk30);
|
||||
}
|
||||
arg0->unk0 = 0;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7B20/func_800070C8.s")
|
||||
void func_800070C8(u64 arg0) {
|
||||
OSTimer sp30;
|
||||
void* sp2C;
|
||||
|
||||
osSetTimer(&sp30, arg0, 0, &D_800E2390, NULL);
|
||||
osRecvMesg(&D_800E2390, &sp2C, 1);
|
||||
}
|
||||
|
||||
+53
-19
@@ -4,30 +4,64 @@
|
||||
|
||||
s32 func_80007130(s32 arg0, u8* arg1) {
|
||||
if (osEepromRead(&D_800E2128, arg0, arg1)) {
|
||||
return -1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_8000716C(s32 arg0, u8* arg1) {
|
||||
s64 temp_ret;
|
||||
s64 temp_ret_2;
|
||||
s64 temp_ret_3;
|
||||
|
||||
if (osEepromWrite(&D_800E2128, arg0, arg1)) {
|
||||
(void) "EEPROM インターフェース回路反応なし (READ)\n";
|
||||
return -1;
|
||||
}
|
||||
temp_ret = __ull_div(osClockRate, 15625);
|
||||
temp_ret_2 = __ll_mul(15000, temp_ret);
|
||||
temp_ret_3 = __ull_div(temp_ret_2, 64);
|
||||
func_800070C8(temp_ret_3);
|
||||
|
||||
(void) "EEPROM READ %02X: %02X %02X %02X %02X %02X %02X %02X %02X\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 func_8000716C(s32 arg0, u8* arg1) {
|
||||
if (osEepromWrite(&D_800E2128, arg0, arg1)) {
|
||||
(void) "EEPROM インターフェース回路反応なし (WRITE)\n";
|
||||
return -1;
|
||||
}
|
||||
func_800070C8(MSEC_TO_CYCLES(15));
|
||||
(void) "EEPROM WRITE %02X: %02X %02X %02X %02X %02X %02X %02X %02X\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
s32 func_800071FC(UnkStruct_7D30* arg0) {
|
||||
s32 var_a2;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
if (osEepromProbe(&D_800E2128) != 1) {
|
||||
return -1;
|
||||
}
|
||||
for (i = 0; i < 0x40; i++) {
|
||||
var_a2 = 0;
|
||||
for (j = 0; j < 8; j++) {
|
||||
if (arg0->data[i][j] != D_80145160.data[i][j]) {
|
||||
arg0->data[i][j] = D_80145160.data[i][j];
|
||||
var_a2 = 1;
|
||||
}
|
||||
}
|
||||
if ((var_a2 == 1) && func_8000716C(i, arg0->data[i])) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
s32 func_800071FC(UnkStruct_7D30* arg0);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7D30/func_800071FC.s")
|
||||
#endif
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7D30/func_800072E0.s")
|
||||
s32 func_800072E0(UnkStruct_7D30* arg0) {
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7D30/D_800C8120.s")
|
||||
if (osEepromProbe(&D_800E2128) != 1) {
|
||||
(void) "EEPROM が ありません\n"; // actually goes in above function
|
||||
(void) "EEPROM が ありません\n";
|
||||
return -1;
|
||||
}
|
||||
for (i = 0; i < 0x40; i++) {
|
||||
if (func_80007130(i, arg0->data[i]) != 0) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
D_80145160 = *arg0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
+270
-40
@@ -1,28 +1,85 @@
|
||||
#include "global.h"
|
||||
|
||||
typedef struct {
|
||||
OSThread thread;
|
||||
char unk_1B0[0x800];
|
||||
OSMesgQueue msgQueue;
|
||||
OSMesg msg;
|
||||
s32 unk9CC; // probably FaultDrawer
|
||||
s16 unk9D0;
|
||||
s16 unk9D2;
|
||||
} UnkStruct_D_80145360;
|
||||
void func_800073C0(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
|
||||
u16* var_v0;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
extern UnkStruct_D_80145360 D_80145360;
|
||||
extern s32 D_80145D10;
|
||||
extern s32 D_80145D28;
|
||||
var_v0 = gFaultMgr.width * arg1 + gFaultMgr.fb->data + arg0;
|
||||
for (i = 0; i < arg3; i++) {
|
||||
for (j = 0; j < arg2; j++, var_v0++) {
|
||||
*var_v0 = ((*var_v0 & 0xE738) >> 2) | 1;
|
||||
}
|
||||
var_v0 += gFaultMgr.width - arg2;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_800073C0.s")
|
||||
void func_800074AC(s32 arg0, s32 arg1, s32 arg2) {
|
||||
s32* var_v0;
|
||||
u16* var_v1;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_800074AC.s")
|
||||
var_v0 = &sFaultCharPixelFlags[(arg2 / 5) * 7];
|
||||
var_v1 = gFaultMgr.width * arg1 + gFaultMgr.fb->data + arg0;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_80007604.s")
|
||||
for (i = 0; i < 7; i++) {
|
||||
u32 temp_t1 = 0x80000000 >> ((arg2 % 5) * 6);
|
||||
u32 temp_a3 = *var_v0++;
|
||||
|
||||
for (j = 0; j < 6; j++) {
|
||||
if (temp_t1 & temp_a3) {
|
||||
*var_v1 = -1;
|
||||
} else {
|
||||
*var_v1 = 1;
|
||||
}
|
||||
var_v1++;
|
||||
temp_t1 >>= 1;
|
||||
}
|
||||
var_v1 += gFaultMgr.width - 6;
|
||||
}
|
||||
}
|
||||
|
||||
void* func_80007604(void* arg0, const char* arg1, size_t arg2) {
|
||||
return (char*) memcpy(arg0, arg1, arg2) + arg2;
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
void func_8000762C(s32 arg0, s32 arg1, const char* fmt, ...) {
|
||||
u8* var_s0;
|
||||
s32 i;
|
||||
u8 sp40[0x100];
|
||||
u32 temp_a2;
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
|
||||
for (i = 0; i < 0x100; i++) {
|
||||
sp40[i] = 0;
|
||||
}
|
||||
|
||||
if (_Printf(func_80007604, sp40, fmt, args) > 0) {
|
||||
for (var_s0 = sp40; *var_s0 != 0; arg0 += 6, var_s0++) {
|
||||
temp_a2 = sFaultCharIndex[*var_s0 & 0x7F];
|
||||
if (temp_a2 != 0xFF) {
|
||||
func_800074AC(arg0, arg1, temp_a2);
|
||||
}
|
||||
}
|
||||
}
|
||||
va_end(args);
|
||||
}
|
||||
#else
|
||||
void func_8000762C(s32 arg0, s32 arg1, const char* fmt, ...);
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_8000762C.s")
|
||||
#endif
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_8000770C.s")
|
||||
void func_8000770C(s32 arg0) {
|
||||
u64 temp_ret_4 = MSEC_TO_CYCLES(arg0);
|
||||
|
||||
osSetTime(0);
|
||||
while (osGetTime() < temp_ret_4) {
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8240.s")
|
||||
|
||||
@@ -72,32 +129,205 @@ extern s32 D_80145D28;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8430.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_800077F8.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;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_80007880.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_80007910.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_80007CEC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_80007D58.s")
|
||||
|
||||
// Matches with IDO 5.3, maybe this is the right compiler for the game?
|
||||
#ifdef NON_MATCHING
|
||||
void func_80007FE4(s32 arg0, u16 arg1, u16 arg2) {
|
||||
D_80145360.unk9CC = arg0;
|
||||
D_80145360.unk9D0 = arg1;
|
||||
D_80145360.unk9D2 = arg2;
|
||||
if (((-0x7F < temp_v1) && (temp_v1 < 0x80)) || (temp_v0 == 0)) {
|
||||
func_8000762C(arg0, arg1, "F%02d:%.3e", arg2, *arg3);
|
||||
} else {
|
||||
func_8000762C(arg0, arg1, "F%02d:---------", arg2);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80007880(u32 arg0) {
|
||||
s32 var_v0;
|
||||
u32 var_v1 = 0x20000;
|
||||
|
||||
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]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80007910(OSThread* thread) {
|
||||
__OSThreadContext* context = &thread->context;
|
||||
s16 var_s0 = (thread->context.cause >> 2) & 0x1F;
|
||||
|
||||
if (var_s0 == 0x17) {
|
||||
var_s0 = 0x10;
|
||||
}
|
||||
if (var_s0 == 0x1F) {
|
||||
var_s0 = 0x11;
|
||||
}
|
||||
func_8000770C(0xBB8);
|
||||
func_800073C0(0xF, 0xF, 0x122, 0xD2);
|
||||
func_8000762C(0x1E, 0x28, "THREAD:%d (%s)", thread->id, D_800C4870[var_s0]);
|
||||
func_8000762C(0x1E, 0x32, "PC:%08XH SR:%08XH\tVA:%08XH", context->pc, context->sr, context->badvaddr);
|
||||
osWritebackDCacheAll();
|
||||
func_8000762C(0x1E, 0x3C, "AT:%08XH V0:%08XH\tV1:%08XH", (s32) context->at, (s32) context->v0, (s32) context->v1);
|
||||
func_8000762C(0x1E, 0x46, "A0:%08XH A1:%08XH\tA2:%08XH", (s32) context->a0, (s32) context->a1, (s32) context->a2);
|
||||
func_8000762C(0x1E, 0x50, "A3:%08XH T0:%08XH\tT1:%08XH", (s32) context->a3, (s32) context->t0, (s32) context->t1);
|
||||
func_8000762C(0x1E, 0x5A, "T2:%08XH T3:%08XH\tT4:%08XH", (s32) context->t2, (s32) context->t3, (s32) context->t4);
|
||||
func_8000762C(0x1E, 0x64, "T5:%08XH T6:%08XH\tT7:%08XH", (s32) context->t5, (s32) context->t6, (s32) context->t7);
|
||||
func_8000762C(0x1E, 0x6E, "S0:%08XH S1:%08XH\tS2:%08XH", (s32) context->s0, (s32) context->s1, (s32) context->s2);
|
||||
func_8000762C(0x1E, 0x78, "S3:%08XH S4:%08XH\tS5:%08XH", (s32) context->s3, (s32) context->s4, (s32) context->s5);
|
||||
func_8000762C(0x1E, 0x82, "S6:%08XH S7:%08XH\tT8:%08XH", (s32) context->s6, (s32) context->s7, (s32) context->t8);
|
||||
func_8000762C(0x1E, 0x8C, "T9:%08XH GP:%08XH\tSP:%08XH", (s32) context->t9, (s32) context->gp, (s32) context->sp);
|
||||
func_8000762C(0x1E, 0x96, "S8:%08XH RA:%08XH", (s32) context->s8, (s32) context->ra);
|
||||
func_80007880(context->fpcsr);
|
||||
osWritebackDCacheAll();
|
||||
func_800077F8(0x1E, 0xAA, 0, &context->fp0.f.f_even);
|
||||
func_800077F8(0x78, 0xAA, 2, &context->fp2.f.f_even);
|
||||
func_800077F8(0xD2, 0xAA, 4, &context->fp4.f.f_even);
|
||||
func_800077F8(0x1E, 0xB4, 6, &context->fp6.f.f_even);
|
||||
func_800077F8(0x78, 0xB4, 8, &context->fp8.f.f_even);
|
||||
func_800077F8(0xD2, 0xB4, 0xA, &context->fp10.f.f_even);
|
||||
func_800077F8(0x1E, 0xBE, 0xC, &context->fp12.f.f_even);
|
||||
func_800077F8(0x78, 0xBE, 0xE, &context->fp14.f.f_even);
|
||||
func_800077F8(0xD2, 0xBE, 0x10, &context->fp16.f.f_even);
|
||||
func_800077F8(0x1E, 0xC8, 0x12, &context->fp18.f.f_even);
|
||||
func_800077F8(0x78, 0xC8, 0x14, &context->fp20.f.f_even);
|
||||
func_800077F8(0xD2, 0xC8, 0x16, &context->fp22.f.f_even);
|
||||
func_800077F8(0x1E, 0xD2, 0x18, &context->fp24.f.f_even);
|
||||
func_800077F8(0x78, 0xD2, 0x1A, &context->fp26.f.f_even);
|
||||
func_800077F8(0xD2, 0xD2, 0x1C, &context->fp28.f.f_even);
|
||||
func_800077F8(0x1E, 0xDC, 0x1E, &context->fp30.f.f_even);
|
||||
osWritebackDCacheAll();
|
||||
osViBlack(0);
|
||||
osViRepeatLine(0);
|
||||
osViSwapBuffer(gFaultMgr.fb);
|
||||
}
|
||||
|
||||
OSThread* func_80007CEC(void) {
|
||||
OSThread* var_v1;
|
||||
|
||||
var_v1 = __osGetActiveQueue();
|
||||
|
||||
while (var_v1->priority != -1) {
|
||||
if ((var_v1->priority > 0) && (var_v1->priority < 0x7F) && (var_v1->flags & 3)) {
|
||||
return var_v1;
|
||||
}
|
||||
var_v1 = var_v1->tlnext;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void Fault_ThreadEntry(void* arg0) {
|
||||
void* sp44;
|
||||
OSThread* sp40;
|
||||
s32 var_s2;
|
||||
s32 var_s5;
|
||||
u32 var_s0;
|
||||
|
||||
sp44 = NULL;
|
||||
var_s5 = 0;
|
||||
var_s0 = 0;
|
||||
var_s2 = 0;
|
||||
|
||||
osSetEventMesg(OS_EVENT_CPU_BREAK, &gFaultMgr.msgQueue, (OSMesg) 1);
|
||||
osSetEventMesg(OS_EVENT_FAULT, &gFaultMgr.msgQueue, (OSMesg) 2);
|
||||
|
||||
sp40 = NULL;
|
||||
while (sp40 == NULL) {
|
||||
osRecvMesg(&gFaultMgr.msgQueue, &sp44, 1);
|
||||
sp40 = func_80007CEC();
|
||||
}
|
||||
|
||||
func_8000762C(300, 10, "-");
|
||||
D_800DD8B0[0] = 1;
|
||||
while (var_s5 == 0) {
|
||||
osSendMesg(&D_800E22C0, (OSMesg) 10, 0);
|
||||
osRecvMesg(&D_800E22F8, NULL, 1);
|
||||
func_800029A8();
|
||||
switch (var_s0) {
|
||||
case 0:
|
||||
if (D_800DD880[0].button == 0x16) {
|
||||
var_s0++;
|
||||
var_s2 = 0xFA0;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 7:
|
||||
if (D_800DD880[0].button & 0x10) {
|
||||
if (D_800DD898[0].button == 0x8000) {
|
||||
var_s0++;
|
||||
var_s2 = 0xBB8;
|
||||
} else if (D_800DD898[0].button != 0) {
|
||||
var_s0 = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case 4:
|
||||
case 8:
|
||||
if (D_800DD880[0].button & 0x10) {
|
||||
if (D_800DD898[0].button == 0x4000) {
|
||||
var_s0++;
|
||||
var_s2 = 0xBB8;
|
||||
} else if (D_800DD898[0].button != 0) {
|
||||
var_s0 = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
case 6:
|
||||
case 9:
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
if (D_800DD880[0].button & 0x10) {
|
||||
if (D_800DD898[0].button == 2) {
|
||||
var_s0++;
|
||||
var_s2 = 0xBB8;
|
||||
} else if (D_800DD898[0].button != 0) {
|
||||
var_s0 = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
if (D_800DD880[0].button & 0x10) {
|
||||
if (D_800DD898[0].button == 0x1000) {
|
||||
var_s0++;
|
||||
var_s2 = 0xBB8;
|
||||
} else if (D_800DD898[0].button != 0) {
|
||||
var_s0 = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
var_s5 = 1;
|
||||
break;
|
||||
}
|
||||
if (var_s2 != 0) {
|
||||
var_s2 -= 1;
|
||||
} else {
|
||||
var_s0 = 0;
|
||||
}
|
||||
}
|
||||
func_80007910(sp40);
|
||||
while (1) {
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80007FE4(FrameBuffer* arg0, u16 arg1, u16 arg2) {
|
||||
gFaultMgr.fb = arg0;
|
||||
gFaultMgr.width = arg1;
|
||||
gFaultMgr.height = arg2;
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/func_80007FE4.s")
|
||||
#endif
|
||||
|
||||
void func_80008018(void) {
|
||||
D_80145360.unk9CC = (PHYS_TO_K0(osMemSize) - sizeof(u16[SCREEN_HEIGHT][SCREEN_WIDTH]));
|
||||
D_80145360.unk9D0 = SCREEN_WIDTH;
|
||||
D_80145360.unk9D2 = SCREEN_HEIGHT;
|
||||
osCreateMesgQueue(&D_80145360.msgQueue, &D_80145360.msg, 1);
|
||||
osCreateThread(&D_80145360.thread, 2, func_80007D58, 0, &D_80145360.msgQueue, 0x7F);
|
||||
osStartThread(&D_80145360.thread);
|
||||
gFaultMgr.fb = (FrameBuffer*) (PHYS_TO_K0(osMemSize) - sizeof(FrameBuffer));
|
||||
gFaultMgr.width = SCREEN_WIDTH;
|
||||
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);
|
||||
osStartThread(&gFaultMgr.thread);
|
||||
}
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ extern Gfx D_800D31B0[];
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_B99D0/func_800B8E14.s")
|
||||
|
||||
void func_800B8F18(void) {
|
||||
gSPDisplayList(D_80137E64++, D_800D31B0);
|
||||
gSPDisplayList(gMasterDisp++, D_800D31B0);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_B99D0/func_800B8F48.s")
|
||||
|
||||
@@ -15,9 +15,3 @@
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C2D3C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C2F30.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C2FB0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C3084.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3430/func_800C3194.s")
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
#include "common.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3BB0/func_800C2FB0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3BB0/func_800C3084.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3BB0/func_800C3194.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_C3BB0/D_800D9430.s")
|
||||
+124
-124
@@ -7,66 +7,66 @@
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80084E78.s")
|
||||
|
||||
void func_800853A4(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
func_8009D0BC(&D_80137E64, &D_1013170, &D_1013570, 24, 17, arg0, arg1, arg2, arg3);
|
||||
func_8009D0BC(&gMasterDisp, &D_1013170, &D_1013570, 24, 17, arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_80085404(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
func_8009C320(&D_80137E64, &D_1011280, &D_10116A0, 48, 44, arg0, arg1, arg2, arg3);
|
||||
func_8009C320(&gMasterDisp, &D_1011280, &D_10116A0, 48, 44, arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_80085464(f32 arg0, f32 arg1) {
|
||||
func_8009C320(&D_80137E64, &D_1011AC0, &D_1011B90, 16, 26, arg0, arg1, 1.0f, 1.0f);
|
||||
func_8009C320(&gMasterDisp, &D_1011AC0, &D_1011B90, 16, 26, arg0, arg1, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
void func_800854BC(f32 arg0, f32 arg1) {
|
||||
func_8009C320(&D_80137E64, &D_1011BB0, &D_1011C80, 16, 26, arg0, arg1, 1.0f, 1.0f);
|
||||
func_8009C320(&gMasterDisp, &D_1011BB0, &D_1011C80, 16, 26, arg0, arg1, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
void func_80085514(f32 arg0, f32 arg1) {
|
||||
func_8009C320(&D_80137E64, &D_1011CA0, &D_1011D70, 16, 26, arg0, arg1, 1.0f, 1.0f);
|
||||
func_8009C320(&gMasterDisp, &D_1011CA0, &D_1011D70, 16, 26, arg0, arg1, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
void func_8008556C(f32 arg0, f32 arg1) {
|
||||
func_8009C320(&D_80137E64, &D_1011D90, &D_1011E60, 16, 26, arg0, arg1, 1.0f, 1.0f);
|
||||
func_8009C320(&gMasterDisp, &D_1011D90, &D_1011E60, 16, 26, arg0, arg1, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
void func_800855C4(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
func_8009E1E8(&D_80137E64, &D_1002280, 8, 12, arg0, arg1, arg2, arg3);
|
||||
func_8009E1E8(&gMasterDisp, &D_1002280, 8, 12, arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_80085618(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
func_8009D994(&D_80137E64, &D_1002280, 8, 12, arg0, arg1, arg2, arg3);
|
||||
func_8009D994(&gMasterDisp, &D_1002280, 8, 12, arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_8008566C(f32 x, f32 y, f32 arg2, f32 arg3) {
|
||||
func_8009D994(&D_80137E64, &D_10030D0, 8, 12, x, y, arg2, arg3);
|
||||
func_8009D994(&gMasterDisp, &D_10030D0, 8, 12, x, y, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_800856C0(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
|
||||
func_80084E78(&D_80137E64, &D_1013580, &D_1013700, 48, 12, arg0, arg1, arg2, arg3, 48.0f * arg4, 8.0f);
|
||||
func_80084E78(&gMasterDisp, &D_1013580, &D_1013700, 48, 12, arg0, arg1, arg2, arg3, 48.0f * arg4, 8.0f);
|
||||
}
|
||||
|
||||
void func_80085740(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
if (D_801778E8 != 0) {
|
||||
func_8009D994(&D_80137E64, &D_3000B20, 32, 5, arg0, arg1, arg2, arg3);
|
||||
func_8009D994(&gMasterDisp, &D_3000B20, 32, 5, arg0, arg1, arg2, arg3);
|
||||
} else {
|
||||
func_8009D994(&D_80137E64, &D_1000E80, 48, 9, arg0, arg1, arg2, arg3);
|
||||
func_8009D994(&gMasterDisp, &D_1000E80, 48, 9, arg0, arg1, arg2, arg3);
|
||||
}
|
||||
}
|
||||
|
||||
void func_800857DC(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
if (D_801778E8 != 0) {
|
||||
func_8009D0BC(&D_80137E64, D_300D3C0, D_300D408, 24, 3, arg0, arg1, arg2, arg3);
|
||||
func_8009D0BC(&gMasterDisp, D_300D3C0, D_300D408, 24, 3, arg0, arg1, arg2, arg3);
|
||||
} else {
|
||||
func_8009D0BC(&D_80137E64, D_10128C0, D_1012988, 40, 5, arg0, arg1, arg2, arg3);
|
||||
func_8009D0BC(&gMasterDisp, D_10128C0, D_1012988, 40, 5, arg0, arg1, arg2, arg3);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80085890(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
if (D_801778E8 != 0) {
|
||||
func_8009D0BC(&D_80137E64, &D_300D350, &D_300D398, 24, 3, arg0, arg1, arg2, arg3);
|
||||
func_8009D0BC(&gMasterDisp, &D_300D350, &D_300D398, 24, 3, arg0, arg1, arg2, arg3);
|
||||
} else {
|
||||
func_8009D0BC(&D_80137E64, &D_10127D0, &D_1012898, 40, 5, arg0, arg1, arg2, arg3);
|
||||
func_8009D0BC(&gMasterDisp, &D_10127D0, &D_1012898, 40, 5, arg0, arg1, arg2, arg3);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,16 +76,16 @@ void func_80086110(f32 arg0, f32 arg1, s32 arg2) {
|
||||
f32 temp = 0.82f;
|
||||
s32 pad;
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x4B);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4B);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
|
||||
if (arg2 != 0) {
|
||||
func_800856C0((8.0f * temp) + arg0, arg1 + 2.0f, temp, 1.0f, arg2 / 255.0f);
|
||||
}
|
||||
|
||||
if ((arg2 <= 0) && (arg2 != -2) && ((D_80177854 == 100) || (D_80177830 == 1) || (D_80177838 != 0))) {
|
||||
func_800B8DD0(&D_80137E64, 0x4C);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 0, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4C);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
|
||||
if ((arg2 == 0) && (D_80178280->unk_1C8 == 7)) {
|
||||
func_800A1200(arg0 + (8.0f * temp) + 4.0f, arg1 + 2.0f, 1.0f, 1.0f, " OK ");
|
||||
} else {
|
||||
@@ -93,8 +93,8 @@ void func_80086110(f32 arg0, f32 arg1, s32 arg2) {
|
||||
}
|
||||
}
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x4C);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4C);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
func_80085618(arg0, arg1, temp, 1.0f);
|
||||
func_800855C4(arg0 + (7.0f * temp) + (temp * 6.0f) * 8.0f, arg1, 1.0f, 1.0f);
|
||||
func_8008566C(arg0 + (7.0f * temp), arg1, temp * 6.0f, 1.0f);
|
||||
@@ -167,10 +167,10 @@ s32 func_800863C8(void) {
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_800869A0.s")
|
||||
|
||||
void func_80086C08(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
func_800B8DD0(&D_80137E64, 0x4E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 60, 60, 128, 96);
|
||||
gDPSetAlphaDither(D_80137E64++, G_AD_DISABLE);
|
||||
func_8009D0BC(&D_80137E64, D_1013170, D_1013570, 24, 17, arg0, arg1, arg2, arg3);
|
||||
func_800B8DD0(&gMasterDisp, 0x4E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 60, 60, 128, 96);
|
||||
gDPSetAlphaDither(gMasterDisp++, G_AD_DISABLE);
|
||||
func_8009D0BC(&gMasterDisp, D_1013170, D_1013570, 24, 17, arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_80086CC8(void) {
|
||||
@@ -286,17 +286,17 @@ void func_80088784(s32 arg0) {
|
||||
|
||||
if (arg0 != 0) {
|
||||
arg0--;
|
||||
func_800B8DD0(&D_80137E64, 0x24);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, D_800D1DC8[arg0]);
|
||||
func_800B8DD0(&gMasterDisp, 0x24);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, D_800D1DC8[arg0]);
|
||||
func_80005708(&D_8013B3C0);
|
||||
func_80005B00(D_8013B3C0, 3.9f, -3.3f, -100.0f, 0);
|
||||
func_80005C34(D_8013B3C0, 0.37f, 0.37f, 0.37f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
|
||||
if (D_80177C98 == 0) {
|
||||
gSPDisplayList(D_80137E64++, D_800D1D4C[arg0]);
|
||||
gSPDisplayList(gMasterDisp++, D_800D1D4C[arg0]);
|
||||
} else {
|
||||
gSPDisplayList(D_80137E64++, D_800D1D94[arg0]);
|
||||
gSPDisplayList(gMasterDisp++, D_800D1D94[arg0]);
|
||||
}
|
||||
|
||||
func_80005740(&D_8013B3C0);
|
||||
@@ -309,43 +309,43 @@ void func_80088784(s32 arg0) {
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80088970.s")
|
||||
|
||||
void func_80089670(void) {
|
||||
func_800B8DD0(&D_80137E64, 0x3E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x3E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
func_80005C34(D_8013B3C0, 18.64f, 21.04f, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_1024AC0);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_1024AC0);
|
||||
}
|
||||
|
||||
void func_80089710(void) {
|
||||
func_800B8DD0(&D_80137E64, 0x3E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x3E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
func_80005C34(D_8013B3C0, 11.0f, 11.0f, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_1024AC0);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_1024AC0);
|
||||
}
|
||||
|
||||
void func_800897B0(void) {
|
||||
func_800B8DD0(&D_80137E64, 0x3E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x3E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
func_80005C34(D_8013B3C0, 130.0f, 130.0f, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_1024830);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_1024830);
|
||||
}
|
||||
|
||||
void func_80089850(void) {
|
||||
func_800B8DD0(&D_80137E64, 0x3E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 0, 0, 0, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x3E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 0, 0, 0, 255);
|
||||
func_80005C34(D_8013B3C0, 125.0f, 125.0f, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_102A8A0);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_102A8A0);
|
||||
}
|
||||
|
||||
void func_800898F0(void) {
|
||||
func_800B8DD0(&D_80137E64, 1);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 208, 80, 255);
|
||||
func_800B8DD0(&gMasterDisp, 1);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 208, 80, 255);
|
||||
func_80005C34(D_8013B3C0, 30.0f, 30.0f, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_6004570);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_6004570);
|
||||
}
|
||||
|
||||
#ifdef IMPORT_DATA_PENDING
|
||||
@@ -365,37 +365,37 @@ void func_80089994(s32 arg0) {
|
||||
var_fv2 = 54.0f;
|
||||
}
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x3E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, D_800D1E14[arg0][0], D_800D1E14[arg0][1], D_800D1E14[arg0][2],
|
||||
func_800B8DD0(&gMasterDisp, 0x3E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, D_800D1E14[arg0][0], D_800D1E14[arg0][1], D_800D1E14[arg0][2],
|
||||
D_800D1E14[arg0][3]);
|
||||
func_80005C34(D_8013B3C0, var_fv1, var_fv2, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_1015510);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_1015510);
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_80089994.s")
|
||||
#endif
|
||||
|
||||
void func_80089AF4(void) {
|
||||
func_800B8DD0(&D_80137E64, 0x3E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 0, 0, 0, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x3E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 0, 0, 0, 255);
|
||||
func_80005C34(D_8013B3C0, 54.0f, 54.0f, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_F014180);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_F014180);
|
||||
}
|
||||
|
||||
void func_80089B94(void) {
|
||||
func_800B8DD0(&D_80137E64, 0x3E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 92, 92, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x3E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 92, 92, 255);
|
||||
func_80005C34(D_8013B3C0, 54.0f, 54.0f, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_D0098B0);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_D0098B0);
|
||||
}
|
||||
|
||||
void func_80089C38(void) {
|
||||
s32 alpha;
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0xC);
|
||||
func_800B8DD0(&gMasterDisp, 0xC);
|
||||
|
||||
alpha = D_80177DB0 % 21;
|
||||
|
||||
@@ -404,16 +404,16 @@ void func_80089C38(void) {
|
||||
}
|
||||
|
||||
alpha *= 255.0f / 10.0f;
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, alpha);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, alpha);
|
||||
func_80005C34(D_8013B3C0, 15.0f, 15.0f, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_1024230);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_1024230);
|
||||
}
|
||||
|
||||
void func_80089D28(void) {
|
||||
s32 gb;
|
||||
|
||||
func_800B8DD0(&D_80137E64, 1);
|
||||
func_800B8DD0(&gMasterDisp, 1);
|
||||
|
||||
gb = D_80177DB0 % 21;
|
||||
|
||||
@@ -430,11 +430,11 @@ void func_80089D28(void) {
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, gb, gb, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, gb, gb, 255);
|
||||
func_80005B00(D_8013B3C0, 0.0f, -185.92001f, 0, 1);
|
||||
func_80005C34(D_8013B3C0, 3.55f, 0.13f, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_1024230);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_1024230);
|
||||
}
|
||||
|
||||
void func_80089E98(s32 arg0) {
|
||||
@@ -522,8 +522,8 @@ void func_80089E98(s32 arg0) {
|
||||
|
||||
void func_8008AD94(void) {
|
||||
if (D_80177834 == 7) {
|
||||
func_800B8DD0(&D_80137E64, 0x4C);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 0, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4C);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
|
||||
|
||||
switch ((s32) D_80177D68) {
|
||||
case 0:
|
||||
@@ -613,8 +613,8 @@ void func_8008B1B0(void) {
|
||||
f32 temp = 142.0f;
|
||||
f32 temp2 = 18.0f;
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x4E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
|
||||
switch (D_80161790 / 2) {
|
||||
case 3:
|
||||
@@ -703,11 +703,11 @@ void func_8008B2F0(void) {
|
||||
}
|
||||
|
||||
void func_8008B5B0(f32 x, f32 y) {
|
||||
func_800B8DD0(&D_80137E64, 0x4B);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4B);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
func_800856C0(x + 8.0f, y + 2.0f, D_801617A8, 1.0f, D_801617AC);
|
||||
func_800B8DD0(&D_80137E64, 0x4C);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, D_800D1EB4, D_800D1EB8, D_800D1EBC, 0xFF);
|
||||
func_800B8DD0(&gMasterDisp, 0x4C);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, D_800D1EB4, D_800D1EB8, D_800D1EBC, 0xFF);
|
||||
func_80085618(x, y, 1.0f, 1.0f);
|
||||
func_800855C4(x + 7.0f + (D_801617A8 * 6.0f * 8.0f), y, 1.0f, 1.0f);
|
||||
func_8008566C(x + 7.0f, y, D_801617A8 * 6.0f, 1.0f);
|
||||
@@ -769,13 +769,13 @@ void func_8008BAE4(void) {
|
||||
}
|
||||
|
||||
if ((D_80161788 != 0) || (D_8016178C != 0)) {
|
||||
func_800B8DD0(&D_80137E64, 0xC);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, r, g, b, alpha);
|
||||
func_800B8DD0(&gMasterDisp, 0xC);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, r, g, b, alpha);
|
||||
func_80005708(&D_8013B3C0);
|
||||
func_80005B00(D_8013B3C0, -53.9f, -38.5f, -139.4f, 1);
|
||||
func_80005C34(D_8013B3C0, 1.0f, 1.0f, 1.0f, 1);
|
||||
func_80006EB8(&D_80137E64);
|
||||
gSPDisplayList(D_80137E64++, D_800D1A40);
|
||||
func_80006EB8(&gMasterDisp);
|
||||
gSPDisplayList(gMasterDisp++, D_800D1A40);
|
||||
func_80005740(&D_8013B3C0);
|
||||
}
|
||||
}
|
||||
@@ -818,14 +818,14 @@ void func_8008C390(f32 arg0, f32 arg1, f32 arg2, s32 arg3) {
|
||||
|
||||
for (i = 10; i != 1; i /= 10) {
|
||||
if ((arg0 > 0.0f) && (arg1 > 0.0f)) {
|
||||
func_8009D994(&D_80137E64, D_800D1EC0[arg3 / i], 16, 8, arg0, arg1, arg2, arg2);
|
||||
func_8009D994(&gMasterDisp, D_800D1EC0[arg3 / i], 16, 8, arg0, arg1, arg2, arg2);
|
||||
}
|
||||
arg0 += 9.0f * arg2;
|
||||
arg3 %= i;
|
||||
}
|
||||
|
||||
if ((arg0 > 0.0f) && (arg1 > 0.0f)) {
|
||||
func_8009D994(&D_80137E64, D_800D1EC0[arg3 / i], 16, 8, arg0, arg1, arg2, arg2);
|
||||
func_8009D994(&gMasterDisp, D_800D1EC0[arg3 / i], 16, 8, arg0, arg1, arg2, arg2);
|
||||
}
|
||||
}
|
||||
#else
|
||||
@@ -843,9 +843,9 @@ void func_8008C5C8(f32 arg0, f32 arg1, f32 arg2, s32 arg3) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
func_8009D418(&D_80137E64, D_800D1EE8[arg3] + (880 * i), 44, 20, arg0, (20 * i * arg2) + arg1, arg2, arg2);
|
||||
func_8009D418(&gMasterDisp, D_800D1EE8[arg3] + (880 * i), 44, 20, arg0, (20 * i * arg2) + arg1, arg2, arg2);
|
||||
}
|
||||
func_8009D418(&D_80137E64, D_800D1EE8[arg3] + 1760, 44, 4, arg0, (40.0f * arg2) + arg1, arg2, arg2);
|
||||
func_8009D418(&gMasterDisp, D_800D1EE8[arg3] + 1760, 44, 4, arg0, (40.0f * arg2) + arg1, arg2, arg2);
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008C5C8.s")
|
||||
@@ -890,7 +890,7 @@ s32 func_8008CB8C(void) {
|
||||
}
|
||||
|
||||
void func_8008CB98(f32 arg0, f32 arg1, f32 arg2) {
|
||||
func_8009D994(&D_80137E64, &D_30013E0, 8, 8, arg0, arg1, arg2, arg2);
|
||||
func_8009D994(&gMasterDisp, &D_30013E0, 8, 8, arg0, arg1, arg2, arg2);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/sf_hud/func_8008CBE4.s")
|
||||
@@ -899,19 +899,19 @@ void func_8008CFB8(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
func_8009D994(&D_80137E64, D_3000BC0 + ((640 * i) / 2), 80, 8, arg0, (8 * i * arg3) + arg1, arg2, arg3);
|
||||
func_8009D994(&gMasterDisp, D_3000BC0 + ((640 * i) / 2), 80, 8, arg0, (8 * i * arg3) + arg1, arg2, arg3);
|
||||
}
|
||||
func_8009D994(&D_80137E64, D_3000BC0 + ((640 * i) / 2), 80, 2, arg0, (8 * i * arg3) + arg1, arg2, arg3);
|
||||
func_8009D994(&gMasterDisp, D_3000BC0 + ((640 * i) / 2), 80, 2, arg0, (8 * i * arg3) + arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_8008D0DC(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4) {
|
||||
u32 var_t8 = 48.0f * arg4;
|
||||
|
||||
func_80084E78(&D_80137E64, D_300D440, D_300D500, 48, 4, arg0, arg1, arg2, arg3, var_t8, 4);
|
||||
func_80084E78(&gMasterDisp, D_300D440, D_300D500, 48, 4, arg0, arg1, arg2, arg3, var_t8, 4);
|
||||
}
|
||||
|
||||
void func_8008D1F0(f32 arg0, f32 arg1, f32 arg2, f32 arg3) {
|
||||
func_8009C320(&D_80137E64, &D_10116B0, &D_1011730, 16, 16, arg0, arg1, arg2, arg3);
|
||||
func_8009C320(&gMasterDisp, &D_10116B0, &D_1011730, 16, 16, arg0, arg1, arg2, arg3);
|
||||
}
|
||||
|
||||
#ifdef IMPORT_DATA_PENDING
|
||||
@@ -919,8 +919,8 @@ void func_8008D250(void) {
|
||||
f32 D_800D20C8[] = { 113.0f, 273.0f, 113.0f, 273.0f };
|
||||
f32 D_800D20D8[] = { 79.0f, 79.0f, 199.0f, 199.0f };
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x4C);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4C);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
func_8008C5C8(D_800D20C8[D_801778A0], D_800D20D8[D_801778A0], 0.54f, D_801778A0);
|
||||
}
|
||||
#else
|
||||
@@ -933,13 +933,13 @@ void func_8008D31C(void) {
|
||||
f32 D_800D20F8[] = { 78.0f, 78.0f, 198.0f, 198.0f };
|
||||
|
||||
func_8009BC2C(&D_800D19E0[D_801778A0], D_80178280[D_801778A0].unk_264 * (1.0f / 255.0f), 0.3f, 10.0f, 0.01f);
|
||||
func_800B8DD0(&D_80137E64, 0x4E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
|
||||
func_8008D0DC(D_800D20E8[D_801778A0] + 3.0f, D_800D20F8[D_801778A0] + 18.0f, 1.0f, 1.0f, D_800D19E0[D_801778A0]);
|
||||
func_800B8DD0(&D_80137E64, 0x4C);
|
||||
func_800B8DD0(&gMasterDisp, 0x4C);
|
||||
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
|
||||
func_8008CFB8(D_800D20E8[D_801778A0], D_800D20F8[D_801778A0], 1.0f, 1.0f);
|
||||
}
|
||||
@@ -991,9 +991,9 @@ void func_8008D4F0(f32 arg0, f32 arg1) {
|
||||
|
||||
temp_t9 = D_800D19AC[var_v1];
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x4E);
|
||||
func_800B8DD0(&gMasterDisp, 0x4E);
|
||||
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, temp_t9, temp_t9, temp_t9, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, temp_t9, temp_t9, temp_t9, 255);
|
||||
|
||||
if (temp_fv0 > 0.01f) {
|
||||
func_80085890(D_800D2108[var_v1] + temp + temp2, D_800D211C[var_v1] + sp60, temp_fv0, 1.0f);
|
||||
@@ -1001,8 +1001,8 @@ void func_8008D4F0(f32 arg0, f32 arg1) {
|
||||
if (temp_fs0 > 0.01f) {
|
||||
func_800857DC(D_800D2108[var_v1] + temp + 1.0f, D_800D211C[var_v1] + sp60, temp_fs0, 1.0f);
|
||||
}
|
||||
func_800B8DD0(&D_80137E64, 0x4C);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4C);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
func_80085740(D_800D2108[var_v1], D_800D211C[var_v1], 1.0f, 1.0f);
|
||||
}
|
||||
#else
|
||||
@@ -1017,8 +1017,8 @@ void func_8008D7F4(void) {
|
||||
s32 D_800D2160[] = { 242, 30, 179, 30 };
|
||||
s32 D_800D2170[] = { 12, 0, 67, 255 };
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x4E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, D_800D2150[D_801778A0], D_800D2160[D_801778A0], D_800D2170[D_801778A0], 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, D_800D2150[D_801778A0], D_800D2160[D_801778A0], D_800D2170[D_801778A0], 255);
|
||||
func_8009FC0C(D_800D2130[D_801778A0], D_800D2140[D_801778A0], D_801778A0 + 1);
|
||||
}
|
||||
#else
|
||||
@@ -1056,7 +1056,7 @@ void func_8008D984(void) {
|
||||
} else {
|
||||
D_800D21A4 = 255.0f;
|
||||
}
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, D_800D21A4);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, D_800D21A4);
|
||||
func_8008D1F0(D_800D21A8[D_801778A0], D_800D21B8[D_801778A0], 1.0f, 1.0f);
|
||||
}
|
||||
}
|
||||
@@ -1080,13 +1080,13 @@ void func_8008DC34(void) {
|
||||
|
||||
void func_8008DCB0(f32 arg0, f32 arg1, s32 arg2, s32 arg3, s32 arg4) {
|
||||
func_800BA4F0();
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, arg2, arg3, arg4, D_80161708);
|
||||
func_8009C320(&D_80137E64, D_1011ED0, D_1011F08, 16, 7, arg0, arg1, 1.0f, 1.0f);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, arg2, arg3, arg4, D_80161708);
|
||||
func_8009C320(&gMasterDisp, D_1011ED0, D_1011F08, 16, 7, arg0, arg1, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
void func_8008DD78(f32 arg0, f32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) {
|
||||
func_800BA4F0();
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, arg3, arg4, arg5, D_80161708);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, arg3, arg4, arg5, D_80161708);
|
||||
|
||||
if (arg2 >= 10) {
|
||||
func_8009FC0C((s32) arg0 - (func_8008BCBC(arg2) * 8) + 11, arg1, arg2);
|
||||
@@ -1121,25 +1121,25 @@ void func_8008DE68(void) {
|
||||
temp4 = sp3C + 6.0f;
|
||||
temp5 = temp1 + 10.0f;
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x4E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_8009C320(&D_80137E64, D_1011A40, D_1011AB0, 32, 7, temp2, temp3, 1.0f, 1.0f);
|
||||
func_800B8DD0(&gMasterDisp, 0x4E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
func_8009C320(&gMasterDisp, D_1011A40, D_1011AB0, 32, 7, temp2, temp3, 1.0f, 1.0f);
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x4C);
|
||||
func_8009D994(&D_80137E64, D_1002040, 40, 12, sp3C, temp1, 1.0f, 1.0f);
|
||||
func_800B8DD0(&gMasterDisp, 0x4C);
|
||||
func_8009D994(&gMasterDisp, D_1002040, 40, 12, sp3C, temp1, 1.0f, 1.0f);
|
||||
|
||||
if (sp3C >= 25.0f) {
|
||||
func_8009BC2C(&D_801616C4, 0.88f, 0.3f, 0.2f, 0.1f);
|
||||
}
|
||||
|
||||
if ((D_801616C4 >= 0.1f) && (sp3C >= 25.0f)) {
|
||||
func_800B8DD0(&D_80137E64, 0x4E);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_8009D0BC(&D_80137E64, D_10129C0, D_1013090, 16, 109, temp4, temp5, 1.0f, D_801616C4);
|
||||
func_800B8DD0(&gMasterDisp, 0x4E);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
func_8009D0BC(&gMasterDisp, D_10129C0, D_1013090, 16, 109, temp4, temp5, 1.0f, D_801616C4);
|
||||
}
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x4C);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 0, 0, 0, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4C);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 0, 0, 0, 255);
|
||||
|
||||
if (D_801616BC > 0.0f) {
|
||||
var_fv0 = (D_801616BC - D_80177848) * (2.76f / D_801616BC);
|
||||
@@ -1158,7 +1158,7 @@ void func_8008DE68(void) {
|
||||
temp6 = sp3C + 8.0f;
|
||||
temp7 = 101.0f - (31.884058f * D_801616C8) + temp1;
|
||||
if (D_801616C8 > 0.0f) {
|
||||
func_8009D418(&D_80137E64, D_800D99F8, 32, 32, temp6, temp7, 0.2f, D_801616C8);
|
||||
func_8009D418(&gMasterDisp, D_Tex_800D99F8, 32, 32, temp6, temp7, 0.2f, D_801616C8);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -1188,11 +1188,11 @@ void func_8008E2C8(f32 arg0, f32 arg1, s32* arg2, f32 arg3) {
|
||||
|
||||
if (i & 1) {
|
||||
func_800BA4F0();
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
func_8009C320(&D_80137E64, &D_1011E80, &D_1011EC0, 0x10, 8, (var_fs0 * arg3) + arg0, arg1, arg3, arg3);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
func_8009C320(&gMasterDisp, &D_1011E80, &D_1011EC0, 0x10, 8, (var_fs0 * arg3) + arg0, arg1, arg3, arg3);
|
||||
} else {
|
||||
func_800BA490();
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 0, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
|
||||
func_8008C390((var_fs0 * arg3) + arg0, arg1, arg3, var_s2);
|
||||
var_fs0 += 9.0f;
|
||||
}
|
||||
@@ -1333,8 +1333,8 @@ void func_8008E620(f32 arg0, f32 arg1) {
|
||||
b = 200;
|
||||
}
|
||||
}
|
||||
func_800B8DD0(&D_80137E64, 0x4C);
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, r, g, b, 255);
|
||||
func_800B8DD0(&gMasterDisp, 0x4C);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, r, g, b, 255);
|
||||
func_80094D20(arg0, arg1);
|
||||
}
|
||||
|
||||
|
||||
@@ -237,22 +237,22 @@ void func_80187CA8_EC0368(void) {
|
||||
s32 temp = 20;
|
||||
s32 temp2 = 36;
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x53);
|
||||
func_800B8DD0(&gMasterDisp, 0x53);
|
||||
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 0, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
|
||||
|
||||
func_800A1200(temp2, temp, 1.0f, 1.0f, D_801ADA44_EE6104);
|
||||
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
|
||||
func_8009D994(&D_80137E64, D_5000300, 16, 8, 148.0f, temp, 1.0f, 1.0f);
|
||||
func_8009D994(&D_80137E64, D_5000200, 16, 8, 164, temp, 1.0f, 1.0f);
|
||||
func_8009D994(&gMasterDisp, D_5000300, 16, 8, 148.0f, temp, 1.0f, 1.0f);
|
||||
func_8009D994(&gMasterDisp, D_5000200, 16, 8, 164, temp, 1.0f, 1.0f);
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x53);
|
||||
func_800B8DD0(&gMasterDisp, 0x53);
|
||||
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
|
||||
func_8009D994(&D_80137E64, &D_50077B0, 16, 2, 36, 32, 15.2f, 1.0f);
|
||||
func_8009D994(&gMasterDisp, &D_50077B0, 16, 2, 36, 32, 15.2f, 1.0f);
|
||||
func_80187E28_EC04E8();
|
||||
}
|
||||
|
||||
@@ -260,9 +260,9 @@ void func_80187E28_EC04E8(void) {
|
||||
s32 temp;
|
||||
s32 i;
|
||||
|
||||
func_800B8DD0(&D_80137E64, 0x53);
|
||||
func_800B8DD0(&gMasterDisp, 0x53);
|
||||
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 0, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
|
||||
|
||||
func_800A1200(94, 38, 1.0f, 1.0f, "RANK");
|
||||
func_800A1200(146, 38, 1.0f, 1.0f, "NAME");
|
||||
@@ -270,15 +270,15 @@ void func_80187E28_EC04E8(void) {
|
||||
temp = 55;
|
||||
|
||||
for (i = 0; i < D_801B8288; i++) {
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
|
||||
func_8009FEA0(105 - ((func_8008BCBC(i + 1) - 1) * 8), temp, i + 1);
|
||||
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 0, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 0, 255);
|
||||
|
||||
func_800A1200(150, temp, 1.0f, 1.0f, &D_801B8248[i][0]);
|
||||
|
||||
gDPSetPrimColor(D_80137E64++, 0, 0, 255, 255, 255, 255);
|
||||
gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255);
|
||||
|
||||
func_8009FEA0(211 - ((func_8008BCBC(D_801B8220[i]) - 1) * 8), temp, D_801B8220[i]);
|
||||
temp += 17;
|
||||
|
||||
Reference in New Issue
Block a user