Proposed names for library stuff (#29)

* get this started

* linker scripts fixed

* oh god what now

* names

* the blue pill

* names, perhaps

* save

* clean out structs

* save for later again

* more names

* save, again
This commit is contained in:
petrie911
2023-11-24 13:11:20 -06:00
committed by GitHub
parent e0cc3dbc0e
commit d32854ced1
38 changed files with 1455 additions and 1350 deletions
+2
View File
@@ -27,3 +27,5 @@
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/__rmonHitCpuFault.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/rmonFindFaultedThreads.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonbrk/D_800C9880.s")
+2
View File
@@ -18,3 +18,5 @@ int __rmonSetComm(KKHeader* req) {
return TV_ERROR_NO_ERROR;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonmisc/D_800C97D0.s")
+2
View File
@@ -44,3 +44,5 @@ s32 rmonGetRcpRegister(s32 arg0) {
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/__rmonSetVRegs.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/__rmonGetRegisterContents.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/rmon/rmonregs/D_800C9800.s")
-157
View File
@@ -1,157 +0,0 @@
#include "global.h"
#ifdef DATA_IMPORT_PENDING
OSContPad D_800DD880[4];
OSContPad D_800DD898[4];
u8 D_800DD8B0[4];
s32 D_800DD8B4;
u8 D_800DD8B8[4];
OSContPad D_800DD8C0[4]; //
OSContPad D_800DD8D8[4]; //
OSContStatus D_800DD8F0[4]; //
OSPfs D_800DD900[4]; //
#else
extern OSContPad D_800DD8C0[4]; //
extern OSContPad D_800DD8D8[4]; //
extern OSContStatus D_800DD8F0[4]; //
extern OSPfs D_800DD900[4]; //
#endif
void func_80002840(s32 contrNum) {
s32 temp_v0 = D_800DD880[contrNum].stick_x;
s32 temp_a2 = D_800DD880[contrNum].stick_y;
s32 var_a0;
s32 var_v0;
if ((temp_v0 >= -16) && (temp_v0 <= 16)) {
var_a0 = 0;
} else if (temp_v0 > 16) {
var_a0 = temp_v0 - 16;
} else {
var_a0 = temp_v0 + 16;
}
if ((temp_a2 >= -16) && (temp_a2 <= 16)) {
var_v0 = 0;
} else if (temp_a2 > 16) {
var_v0 = temp_a2 - 16;
} else {
var_v0 = temp_a2 + 16;
}
if (var_a0 > 60) {
var_a0 = 60;
}
if (var_a0 < -60) {
var_a0 = -60;
}
if (var_v0 > 60) {
var_v0 = 60;
}
if (var_v0 < -60) {
var_v0 = -60;
}
D_800DD898[contrNum].stick_x = var_a0;
D_800DD898[contrNum].stick_y = var_v0;
}
void func_8000291C(void) {
u8 sp1F;
s32 i;
osContInit(&gSerialEventQueue, &sp1F, D_800DD8F0);
for (i = 0; i < 4; i++) {
D_800DD8B0[i] = (sp1F >> i) & 1;
D_800DD8B8[i] = 0;
}
}
void func_800029A8(void) {
s32 i;
for (i = 0; i < 4; i++) {
if (D_800DD8B0[i] == 1 && D_800DD8C0[i].errno == 0) {
D_800DD8D8[i] = D_800DD880[i];
D_800DD880[i] = D_800DD8C0[i];
D_800DD898[i].button = (D_800DD880[i].button ^ D_800DD8D8[i].button) & D_800DD880[i].button;
func_80002840(i);
} else {
D_800DD880[i].button = D_800DD880[i].stick_x = D_800DD880[i].stick_y = D_800DD880[i].errno =
D_800DD898[i].button = D_800DD898[i].stick_x = D_800DD898[i].stick_y = D_800DD898[i].errno = 0;
}
}
}
#ifdef DATA_IMPORT_PENDING // requires data import on D_800DD8C0
void func_80002AF4(void) {
s32 i;
if (D_800DD8B4 != 0) {
D_800DD8B4--;
for (i = 0; i < 4; i++) {
D_800DD8C0[i].button = D_800DD8C0[i].stick_x = D_800DD8C0[i].stick_y = D_800DD8C0[i].errno = 0;
}
} else {
osContStartReadData(&gSerialEventQueue);
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
osContGetReadData(D_800DD8C0);
}
osSendMesg(&D_800E22F8, (OSMesg) SI_MESG_16, OS_MESG_PRI_NORMAL);
}
#else
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3440/func_80002AF4.s")
#endif
void func_80002BE8(void) {
if ((D_80137E80 == 0) && (func_800072E0(&D_80144F60) == 0)) {
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_15, OS_MESG_PRI_NORMAL);
return;
}
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_14, OS_MESG_PRI_NORMAL);
}
void func_80002C50(void) {
if ((D_80137E80 == 0) && (func_800071FC(&D_80144F60) == 0)) {
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_15, OS_MESG_PRI_NORMAL);
return;
}
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_14, OS_MESG_PRI_NORMAL);
}
void func_80002CB8(void) {
s32 i;
osContStartQuery(&gSerialEventQueue);
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
osContGetQuery(D_800DD8F0);
for (i = 0; i < 4; i++) {
if ((D_800DD8B0[i] != 0) && (D_800DD8F0[i].errno == 0)) {
if (D_800DD8F0[i].status & 1) {
if (D_800DD8B8[i] == 0) {
if (osMotorInit(&gSerialEventQueue, &D_800DD900[i], i)) {
D_800DD8B8[i] = 0;
} else {
D_800DD8B8[i] = 1;
}
}
if (D_800DD8B8[i] == 1) {
if (D_80137E84[i] != 0) {
if (osMotorStart(&D_800DD900[i])) {
D_800DD8B8[i] = 0;
}
} else {
if (osMotorStop(&D_800DD900[i])) {
D_800DD8B8[i] = 0;
}
}
}
} else {
D_800DD8B8[i] = 0;
}
}
}
for (i = 0; i < 4; i++) {
D_80137E84[i] = 0;
}
}
-42
View File
@@ -1,42 +0,0 @@
#include "global.h"
void func_800033E0(void* var_s2, void* var_s1, ptrdiff_t var_s0) {
osInvalICache(var_s1, var_s0);
osInvalDCache(var_s1, var_s0);
while (var_s0 > 0x100) {
osPiStartDma(&D_800E2110, 0, 0, (uintptr_t) var_s2, var_s1, 0x100, &D_800E20F0);
var_s0 -= 0x100;
var_s2 = (void*) ((uintptr_t) var_s2 + 0x100);
var_s1 = (void*) ((uintptr_t) var_s1 + 0x100);
osRecvMesg(&D_800E20F0, NULL, OS_MESG_BLOCK);
}
if (var_s0 != 0) {
osPiStartDma(&D_800E2110, 0, 0, (uintptr_t) var_s2, var_s1, var_s0, &D_800E20F0);
osRecvMesg(&D_800E20F0, NULL, OS_MESG_BLOCK);
}
}
void func_800034E8(u8 arg0) {
s32 i;
D_80137E88 |= 1;
if (arg0 == 1) {
if (D_80137E8A == 0) {
if (D_80137E88 == 1) {
osViBlack(1);
} else {
for (i = 0; i < 0x3C0; i++) {
D_8038F080[i] = D_80137E88;
}
osWritebackDCacheAll();
osViSwapBuffer(&D_8038F300);
osViRepeatLine(1);
}
D_80137E8A = 1;
}
} else if (D_80137E8A == 1) {
osViRepeatLine(0);
osViBlack(0);
D_80137E8A = 0;
}
}
-15
View File
@@ -1,15 +0,0 @@
#include "global.h"
extern s32 D_8013C3D0[0x2200];
extern s32* D_80144BD0;
void func_80006F20(void) {
D_80144BD0 = D_8013C3D0;
}
void* func_80006F38(s32 arg0) {
void* tmp = D_80144BD0;
D_80144BD0 = (void*) (((arg0 + 0xF) & ~0xF) + (uintptr_t) D_80144BD0);
return tmp;
}
-51
View File
@@ -1,51 +0,0 @@
#include "global.h"
extern UnkStruct_func_80007088 D_80144BE0[0x10];
UnkStruct_func_80007088* func_80006F60(void) {
s32 i;
for (i = 0; i < 0x10; i++) {
if (D_80144BE0[i].unk0 == 0) {
return &D_80144BE0[i];
}
}
return NULL;
}
s32 func_80006FD8(u64 arg0, void* arg2, s32* arg3, s32 arg4) {
UnkStruct_func_80007088* temp_v0;
temp_v0 = func_80006F60();
if (temp_v0 == NULL) {
return -1;
}
temp_v0->unk0 = 1;
temp_v0->unk28 = arg2;
temp_v0->unk2C = arg3;
temp_v0->unk30 = arg4;
return osSetTimer(&temp_v0->unk8, arg0, 0, &gThread7msgQueue, temp_v0);
}
void func_80007068(s32* arg0, s32 arg1) {
*arg0 += arg1;
}
void func_8000707C(s32* arg0, s32 arg1) {
*arg0 = arg1;
}
void func_80007088(UnkStruct_func_80007088* arg0) {
if (arg0->unk28 != NULL) {
arg0->unk28(arg0->unk2C, arg0->unk30);
}
arg0->unk0 = 0;
}
void func_800070C8(u64 arg0) {
OSTimer sp30;
OSMesg sp2C;
osSetTimer(&sp30, arg0, 0, &D_800E2390, NULL);
osRecvMesg(&D_800E2390, &sp2C, OS_MESG_BLOCK);
}
+69 -77
View File
@@ -1,12 +1,52 @@
#include "global.h"
#ifdef DATA_IMPORT_PENDING
FaultMgr gFaultMgr;
s32 sFaultCharPixelFlags[0x40];
u8 sFaultCharIndex[0x80];
const char* D_800C4870[18];
const char* D_800C48B8[6];
#endif
u8 sFaultCharIndex[0x80] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x29, 0xFF, 0xFF, 0xFF, 0x2B,
0xFF, 0xFF, 0x25, 0x26, 0xFF, 0x2A, 0xFF, 0x27, 0x2C, 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
0x09, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14,
0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A,
0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
s32 sFaultCharPixelFlags[0x40] = {
0x70871C30, 0x8988A250, 0x88808290, 0x88831C90, 0x888402F8, 0x88882210, 0x71CF9C10, 0xF9CF9C70,
0x8228A288, 0xF200A288, 0x0BC11C78, 0x0A222208, 0x8A222288, 0x71C21C70, 0x23C738F8, 0x5228A480,
0x8A282280, 0x8BC822F0, 0xFA282280, 0x8A28A480, 0x8BC738F8, 0xF9C89C08, 0x82288808, 0x82088808,
0xF2EF8808, 0x82288888, 0x82288888, 0x81C89C70, 0x8A08A270, 0x920DA288, 0xA20AB288, 0xC20AAA88,
0xA208A688, 0x9208A288, 0x8BE8A270, 0xF1CF1CF8, 0x8A28A220, 0x8A28A020, 0xF22F1C20, 0x82AA0220,
0x82492220, 0x81A89C20, 0x8A28A288, 0x8A28A288, 0x8A289488, 0x8A2A8850, 0x894A9420, 0x894AA220,
0x70852220, 0xF8011000, 0x08020800, 0x10840400, 0x20040470, 0x40840400, 0x80020800, 0xF8011000,
0x70800000, 0x88822200, 0x08820400, 0x108F8800, 0x20821000, 0x00022200, 0x20800020, 0x00000000,
};
const char* sFaultCauses[18] = {
"Interrupt",
"TLB modification",
"TLB exception on load",
"TLB exception on store",
"Address error on load",
"Address error on store",
"Bus error on inst.",
"Bus error on data",
"System call exception",
"Breakpoint exception",
"Reserved instruction",
"Coprocessor unusable",
"Arithmetic overflow",
"Trap exception",
"Virtual coherency on inst.",
"Floating point exception",
"Watchpoint exception",
"Virtual coherency on data",
};
const char* sFloatExceptions[6] = {
"Unimplemented operation", "Invalid operation", "Division by zero", "Overflow", "Underflow", "Inexact operation",
};
void func_800073C0(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {
u16* var_v0;
@@ -79,63 +119,15 @@ void func_8000762C(s32 arg0, s32 arg1, const char* fmt, ...) {
va_end(args);
}
void func_8000770C(s32 arg0) {
u64 temp_ret_4 = MSEC_TO_CYCLES(arg0);
void func_8000770C(s32 time) {
u64 time64 = MSEC_TO_CYCLES(time);
osSetTime(0);
while (osGetTime() < temp_ret_4) {
while (osGetTime() < time64) {
;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8240.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C824C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8260.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8278.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8290.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C82A8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C82C0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C82D4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C82E8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8300.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8318.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8330.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8348.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C835C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C836C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8388.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C83A4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C83BC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C83D8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C83F0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8404.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8418.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8424.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/7FC0/D_800C8430.s")
void func_800077F8(s32 arg0, s32 arg1, s32 arg2, f32* arg3) {
u32 temp_v0 = *(u32*) arg3;
s32 temp_v1 = ((temp_v0 & 0x7F800000) >> 0x17) - 0x7F;
@@ -154,7 +146,7 @@ void func_80007880(u32 arg0) {
func_8000762C(0x1E, 0xA0, "FPCSR:%08XH", arg0);
for (var_v0 = 0; var_v0 < 6; var_v0++, var_v1 >>= 1) {
if (arg0 & var_v1) {
func_8000762C(0x84, 0xA0, "(%s)", D_800C48B8[var_v0]);
func_8000762C(0x84, 0xA0, "(%s)", sFloatExceptions[var_v0]);
return;
}
}
@@ -174,7 +166,7 @@ void func_80007910(OSThread* thread) {
}
func_8000770C(3000);
func_800073C0(15, 15, 290, 210);
func_8000762C(30, 40, "THREAD:%d (%s)", thread->id, D_800C4870[var_s0]);
func_8000762C(30, 40, "THREAD:%d (%s)", thread->id, sFaultCauses[var_s0]);
func_8000762C(30, 50, "PC:%08XH SR:%08XH\tVA:%08XH", context->pc, context->sr, context->badvaddr);
osWritebackDCacheAll();
func_8000762C(30, 60, "AT:%08XH V0:%08XH\tV1:%08XH", (s32) context->at, (s32) context->v0, (s32) context->v1);
@@ -247,14 +239,14 @@ void Fault_ThreadEntry(void* arg0) {
}
func_8000762C(300, 10, "-");
D_800DD8B0[0] = 1;
gControllerStatus[0] = 1;
while (var_s5 == 0) {
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_10, OS_MESG_PRI_NORMAL);
osRecvMesg(&D_800E22F8, NULL, OS_MESG_BLOCK);
func_800029A8();
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_CONTROLLER, OS_MESG_PRI_NORMAL);
osRecvMesg(&gControllerMsgQueue, NULL, OS_MESG_BLOCK);
Controller_UpdateInput();
switch (var_s0) {
case 0:
if (D_800DD880[0].button == 0x16) {
if (gCurrentInput[0].button == (R_TRIG | D_CBUTTONS | L_CBUTTONS)) {
var_s0++;
var_s2 = 4000;
}
@@ -262,11 +254,11 @@ void Fault_ThreadEntry(void* arg0) {
case 1:
case 2:
case 7:
if (D_800DD880[0].button & 0x10) {
if (D_800DD898[0].button == 0x8000) {
if (gCurrentInput[0].button & R_TRIG) {
if (gChangedInput[0].button == A_BUTTON) {
var_s0++;
var_s2 = 3000;
} else if (D_800DD898[0].button != 0) {
} else if (gChangedInput[0].button != 0) {
var_s0 = 0;
}
}
@@ -274,11 +266,11 @@ void Fault_ThreadEntry(void* arg0) {
case 3:
case 4:
case 8:
if (D_800DD880[0].button & 0x10) {
if (D_800DD898[0].button == 0x4000) {
if (gCurrentInput[0].button & R_TRIG) {
if (gChangedInput[0].button == B_BUTTON) {
var_s0++;
var_s2 = 3000;
} else if (D_800DD898[0].button != 0) {
} else if (gChangedInput[0].button != 0) {
var_s0 = 0;
}
}
@@ -290,21 +282,21 @@ void Fault_ThreadEntry(void* arg0) {
case 11:
case 12:
case 13:
if (D_800DD880[0].button & 0x10) {
if (D_800DD898[0].button == 2) {
if (gCurrentInput[0].button & R_TRIG) {
if (gChangedInput[0].button == L_CBUTTONS) {
var_s0++;
var_s2 = 3000;
} else if (D_800DD898[0].button != 0) {
} else if (gChangedInput[0].button != 0) {
var_s0 = 0;
}
}
break;
case 14:
if (D_800DD880[0].button & 0x10) {
if (D_800DD898[0].button == 0x1000) {
if (gCurrentInput[0].button & R_TRIG) {
if (gChangedInput[0].button == START_BUTTON) {
var_s0++;
var_s2 = 3000;
} else if (D_800DD898[0].button != 0) {
} else if (gChangedInput[0].button != 0) {
var_s0 = 0;
}
}
@@ -337,6 +329,6 @@ void Fault_Init(void) {
gFaultMgr.height = SCREEN_HEIGHT;
osCreateMesgQueue(&gFaultMgr.msgQueue, &gFaultMgr.msg, 1);
osCreateThread(&gFaultMgr.thread, THREAD_ID_FAULT, Fault_ThreadEntry, 0, gFaultMgr.stack + sizeof(gFaultMgr.stack),
0x7F);
127);
osStartThread(&gFaultMgr.thread);
}
+61
View File
@@ -0,0 +1,61 @@
#include "global.h"
SaveFile gSaveFile;
u16 Save_Checksum(Save* arg0) {
u16 var_v1;
s32 i;
for (i = 0, var_v1 = 0; i < sizeof(SaveData); i++) {
var_v1 ^= arg0->raw[i];
var_v1 <<= 1;
var_v1 = (var_v1 & 0xFE) | ((var_v1 >> 8) & 1);
}
var_v1 = (var_v1 & 0xFF) | 0x9500;
return var_v1;
}
s32 Save_Write(void) {
void* sp1C;
gSaveFile.save.checksum = Save_Checksum(&gSaveFile.save);
gSaveFile.backup = gSaveFile.save;
gSaveIOBuffer = gSaveFile;
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_WRITE_SAVE, OS_MESG_PRI_NORMAL);
osRecvMesg(&gSaveMsgQueue, &sp1C, OS_MESG_BLOCK);
if (sp1C != (OSMesg) SI_SAVE_SUCCESS) {
return -1;
}
return 0;
}
s32 Save_Read(void) {
void* sp24;
s32 i;
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_READ_SAVE, OS_MESG_PRI_NORMAL);
osRecvMesg(&gSaveMsgQueue, &sp24, OS_MESG_BLOCK);
if ((s32) sp24 != SI_SAVE_SUCCESS) {
return -1;
}
gSaveFile = gSaveIOBuffer;
if (gSaveFile.save.checksum == Save_Checksum(&gSaveFile.save)) {
(void) "EEPROM ROM[0] 正常\n";
return 0;
}
for (i = 0; i <= sizeof(SaveData); i++) { // should be <, but gets overwritten immediately.
gSaveFile.save.raw[i] = gSaveFile.backup.raw[i];
}
gSaveFile.save.checksum = gSaveFile.backup.checksum;
if (gSaveFile.save.checksum == Save_Checksum(&gSaveFile.save)) {
(void) "EEPROM ROM[1 正常\n";
return 0;
}
(void) "EEPROM ROM[0] & ROM[1] 異常\n";
return -1;
}
+147
View File
@@ -0,0 +1,147 @@
#include "global.h"
OSContPad gCurrentInput[4];
OSContPad gChangedInput[4];
u8 gControllerStatus[4];
s32 gStopInputTimer;
u8 gRumbleStatus[4];
OSContPad sNextInput[4]; //
OSContPad sPrevInput[4]; //
OSContStatus D_800DD8F0[4]; //
OSPfs D_800DD900[4]; //
void Controller_AddDeadZone(s32 contrNum) {
s32 temp_v0 = gCurrentInput[contrNum].stick_x;
s32 temp_a2 = gCurrentInput[contrNum].stick_y;
s32 var_a0;
s32 var_v0;
if ((temp_v0 >= -16) && (temp_v0 <= 16)) {
var_a0 = 0;
} else if (temp_v0 > 16) {
var_a0 = temp_v0 - 16;
} else {
var_a0 = temp_v0 + 16;
}
if ((temp_a2 >= -16) && (temp_a2 <= 16)) {
var_v0 = 0;
} else if (temp_a2 > 16) {
var_v0 = temp_a2 - 16;
} else {
var_v0 = temp_a2 + 16;
}
if (var_a0 > 60) {
var_a0 = 60;
}
if (var_a0 < -60) {
var_a0 = -60;
}
if (var_v0 > 60) {
var_v0 = 60;
}
if (var_v0 < -60) {
var_v0 = -60;
}
gChangedInput[contrNum].stick_x = var_a0;
gChangedInput[contrNum].stick_y = var_v0;
}
void Controller_Init(void) {
u8 sp1F;
s32 i;
osContInit(&gSerialEventQueue, &sp1F, D_800DD8F0);
for (i = 0; i < 4; i++) {
gControllerStatus[i] = (sp1F >> i) & 1;
gRumbleStatus[i] = 0;
}
}
void Controller_UpdateInput(void) {
s32 i;
for (i = 0; i < 4; i++) {
if (gControllerStatus[i] == 1 && sNextInput[i].errno == 0) {
sPrevInput[i] = gCurrentInput[i];
gCurrentInput[i] = sNextInput[i];
gChangedInput[i].button = (gCurrentInput[i].button ^ sPrevInput[i].button) & gCurrentInput[i].button;
Controller_AddDeadZone(i);
} else {
gCurrentInput[i].button = gCurrentInput[i].stick_x = gCurrentInput[i].stick_y = gCurrentInput[i].errno =
gChangedInput[i].button = gChangedInput[i].stick_x = gChangedInput[i].stick_y = gChangedInput[i].errno =
0;
}
}
}
void Controller_ReadData(void) {
s32 i;
if (gStopInputTimer != 0) {
gStopInputTimer--;
for (i = 0; i < 4; i++) {
sNextInput[i].button = sNextInput[i].stick_x = sNextInput[i].stick_y = sNextInput[i].errno = 0;
}
} else {
osContStartReadData(&gSerialEventQueue);
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
osContGetReadData(sNextInput);
}
osSendMesg(&gControllerMsgQueue, (OSMesg) SI_CONT_READ_DONE, OS_MESG_PRI_NORMAL);
}
void Save_ReadData(void) {
if ((gStartNMI == 0) && (Save_ReadEeprom(&gSaveIOBuffer) == 0)) {
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_SUCCESS, OS_MESG_PRI_NORMAL);
return;
}
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_FAILED, OS_MESG_PRI_NORMAL);
}
void Save_WriteData(void) {
if ((gStartNMI == 0) && (Save_WriteEeprom(&gSaveIOBuffer) == 0)) {
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_SUCCESS, OS_MESG_PRI_NORMAL);
return;
}
osSendMesg(&gSaveMsgQueue, (OSMesg) SI_SAVE_FAILED, OS_MESG_PRI_NORMAL);
}
void Controller_Rumble(void) {
s32 i;
osContStartQuery(&gSerialEventQueue);
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
osContGetQuery(D_800DD8F0);
for (i = 0; i < 4; i++) {
if ((gControllerStatus[i] != 0) && (D_800DD8F0[i].errno == 0)) {
if (D_800DD8F0[i].status & 1) {
if (gRumbleStatus[i] == 0) {
if (osMotorInit(&gSerialEventQueue, &D_800DD900[i], i)) {
gRumbleStatus[i] = 0;
} else {
gRumbleStatus[i] = 1;
}
}
if (gRumbleStatus[i] == 1) {
if (D_80137E84[i] != 0) {
if (osMotorStart(&D_800DD900[i])) {
gRumbleStatus[i] = 0;
}
} else {
if (osMotorStop(&D_800DD900[i])) {
gRumbleStatus[i] = 0;
}
}
}
} else {
gRumbleStatus[i] = 0;
}
}
}
for (i = 0; i < 4; i++) {
D_80137E84[i] = 0;
}
}
+54 -13
View File
@@ -1,16 +1,16 @@
#include "global.h"
s32 func_80002E80(char* dst, char* fmt, va_list args) {
s32 Lib_vsPrintf(char* dst, char* fmt, va_list args) {
return vsprintf(dst, fmt, args);
}
void func_80002EA0(s32 arg0, void (**arg1)(s32, s32), s32 arg2, s32 arg3) {
void Lib_vTable(s32 arg0, void (**arg1)(s32, s32), s32 arg2, s32 arg3) {
void (*temp)(s32, s32) = arg1[arg0];
temp(arg2, arg3);
}
void func_80002EE4(u8* buf1, u8* buf2, s32 len) {
void Lib_SwapBuffers(u8* buf1, u8* buf2, s32 len) {
s32 i;
u8 temp;
@@ -23,7 +23,7 @@ void func_80002EE4(u8* buf1, u8* buf2, s32 len) {
typedef s32 (*CompareFunc)(void*, void*);
void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
void Lib_QuickSort(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
u32 splitIdx;
u8* last;
u8* right;
@@ -34,7 +34,7 @@ void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
if (curLen == 2) {
if (cFunc(first, last) > 0) {
func_80002EE4(first, last, size);
Lib_SwapBuffers(first, last, size);
}
return;
}
@@ -52,15 +52,15 @@ void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
if (left >= right) {
break;
}
func_80002EE4(left, right, size);
Lib_SwapBuffers(left, right, size);
left += size;
right -= size;
}
func_80002EE4(last, left, size);
Lib_SwapBuffers(last, left, size);
splitIdx = (left - first) / size;
if (curLen / 2 < splitIdx) {
if ((curLen - splitIdx) > 2) {
func_80002F88(left + size, curLen - splitIdx - 1, size, cFunc);
Lib_QuickSort(left + size, curLen - splitIdx - 1, size, cFunc);
}
if (splitIdx < 2) {
@@ -70,7 +70,7 @@ void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
curLen = splitIdx;
} else {
if (splitIdx >= 2) {
func_80002F88(first, splitIdx, size, cFunc);
Lib_QuickSort(first, splitIdx, size, cFunc);
}
if ((curLen - splitIdx) <= 2) {
@@ -83,7 +83,7 @@ void func_80002F88(u8* first, u32 curLen, u32 size, CompareFunc cFunc) {
}
}
void func_8000316C(Gfx** dList) {
void Lib_Perspective(Gfx** dList) {
u16 norm;
guPerspective(gGfxMtx, &norm, D_80161A3C, 1.3333334f, D_80161A40, D_80161A44, 1.0f);
@@ -91,13 +91,54 @@ void func_8000316C(Gfx** dList) {
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
guLookAt(gGfxMtx, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -12800.0f, 0.0f, 1.0f, 0.0f);
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
Matrix_Copy(D_8013B3C0, &gIdentityMatrix);
Matrix_Copy(gGfxMatrix, &gIdentityMatrix);
}
void func_800032B4(Gfx** dList) {
void Lib_Ortho(Gfx** dList) {
guOrtho(gGfxMtx, -160.0f, 160.0f, -120.0f, 120.0f, D_80161A40, D_80161A44, 1.0f);
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
guLookAt(gGfxMtx, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -12800.0f, 0.0f, 1.0f, 0.0f);
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
Matrix_Copy(D_8013B3C0, &gIdentityMatrix);
Matrix_Copy(gGfxMatrix, &gIdentityMatrix);
}
void Lib_DmaRead(void* src, void* dst, ptrdiff_t size) {
osInvalICache(dst, size);
osInvalDCache(dst, size);
while (size > 0x100) {
osPiStartDma(&gDmaIOMsg, 0, 0, (uintptr_t) src, dst, 0x100, &gDmaMsgQueue);
size -= 0x100;
src = (void*) ((uintptr_t) src + 0x100);
dst = (void*) ((uintptr_t) dst + 0x100);
osRecvMesg(&gDmaMsgQueue, NULL, OS_MESG_BLOCK);
}
if (size != 0) {
osPiStartDma(&gDmaIOMsg, 0, 0, (uintptr_t) src, dst, size, &gDmaMsgQueue);
osRecvMesg(&gDmaMsgQueue, NULL, OS_MESG_BLOCK);
}
}
void Lib_FillScreen(u8 setFill) {
s32 i;
gFillScreenColor |= 1;
if (setFill == true) {
if (gFillScreen == false) {
if (gFillScreenColor == 1) {
osViBlack(1);
} else {
for (i = 0; i < 3 * SCREEN_WIDTH; i++) {
D_8038F080[i] = gFillScreenColor;
}
osWritebackDCacheAll();
osViSwapBuffer(&D_8038F300);
osViRepeatLine(1);
}
gFillScreen = true;
}
} else if (gFillScreen == true) {
osViRepeatLine(0);
osViBlack(0);
gFillScreen = false;
}
}
+7 -7
View File
@@ -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);
}
+156 -155
View File
@@ -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);
+21 -20
View File
@@ -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) {
+5 -11
View File
@@ -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);
+15
View File
@@ -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;
}
+12 -14
View File
@@ -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;
}
+6 -6
View File
@@ -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);
}
+2 -2
View File
@@ -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);
+275 -275
View File
File diff suppressed because it is too large Load Diff
+43 -43
View File
@@ -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;
+16 -16
View File
@@ -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;
}
-72
View File
@@ -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
+34 -34
View File
@@ -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;
+50
View File
@@ -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);
}
+10 -10
View File
@@ -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;
}
+70 -70
View File
@@ -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;