crash_screen OK (#449)

* crash screen done

* cleanup

* done i think

* crash -> crash_screen

* fix warnings

* size comment

* review
This commit is contained in:
fig02 2021-09-29 19:01:31 -04:00 committed by GitHub
parent f297fff724
commit 5779f5de0e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 395 additions and 981 deletions

View File

@ -1717,27 +1717,6 @@ typedef struct FontData {
/* 0x00 */ char unk_00[24];
} FontData; // size = 0x18
typedef struct Crash {
/* 0x000 */ char unk_00[20];
/* 0x014 */ s32 threadID;
/* 0x018 */ char unk_18[12];
/* 0x024 */ s64 AT;
/* 0x02C */ s64 V0;
/* 0x034 */ s64 V1;
/* 0x03C */ s64 A0;
/* 0x044 */ s64 A1;
/* 0x04C */ s64 A2;
/* 0x054 */ s64 A3;
/* 0x05C */ char unk_5C[16];
/* 0x06C */ s32 T2;
/* 0x070 */ char unk_70[168];
/* 0x118 */ s32 SR;
/* 0x11C */ s32 PC;
/* 0x120 */ s32 interrupt;
/* 0x124 */ s32 VA;
/* 0x128 */ char unk_128[208];
} Crash; // size = 0x1F8
typedef struct PlayerStatus {
/* 0x000 */ s32 flags;
/* 0x004 */ u32 animFlags;

View File

@ -5,6 +5,7 @@
#include "common.h"
#include "map.h"
#include "enums.h"
#include "stdlib/stdarg.h"
f32 fabsf(f32 f);
f32 cosine(s16 arg0);
@ -16,6 +17,7 @@ void boot_idle(void);
void boot_main(void);
void osCleanupThread(void);
OSThread* osGetActiveQueue(void);
f32 signF(f32 val);
@ -23,6 +25,8 @@ void* heap_malloc(s32 size);
HeapNode* _heap_create(s32* addr, u32 size);
s32 dma_copy(Addr romStart, Addr romEnd, void* vramDest);
s32 _Printf(PrintCallback pfn, void* arg, const char* fmt, va_list ap);
s32 get_global_byte(s32 index);
s32 get_global_flag(s32 index);
s32 get_area_byte(s32 index);
@ -458,6 +462,9 @@ void set_curtain_draw_callback(UNK_FUN_PTR(callback));
void set_curtain_fade_goal(f32 fade);
void set_curtain_fade(f32 fade);
void crash_screen_init(void);
void crash_screen_set_draw_info(u16* frameBufPtr, s16 width, s16 height);
// Dead functions:
//Npc* dead_get_npc_safe(NpcID npcId); // get_npc_safe
void func_80077BD0(s32, s32, s32, s32, s32, s32);

View File

@ -12,6 +12,8 @@
typedef void (*StateFunc)(void);
typedef void* (*PrintCallback)(void*, const char*, u32);
/// Linker symbol address, as in `ld_addrs.h`.
typedef u8 Addr[];

View File

@ -30,7 +30,7 @@ void boot_main(void) {
}
nuGfxDisplayOff();
crash_create_monitor();
crash_screen_init();
is_debug_init();
nuGfxInit();
gGameStatusPtr->contBitPattern = nuContInit();

View File

@ -1,86 +0,0 @@
#include "common.h"
extern struct {
/* 0x000 */ char unk_000[0x9CC];
/* 0x9CC */ s32 unk_9CC;
/* 0x9D0 */ s16 unk_9D0;
/* 0x9D2 */ s16 unk_9D2;
} D_8009BB30; // size unknown
s32 D_80077210[] = {
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF29FFFF,
0xFF2BFFFF, 0x2526FF2A, 0xFF272CFF, 0x00010203, 0x04050607, 0x080924FF, 0xFFFFFF28, 0xFF0A0B0C, 0x0D0E0F10,
0x11121314, 0x15161718, 0x191A1B1C, 0x1D1E1F20, 0x212223FF, 0xFFFFFFFF, 0xFF0A0B0C, 0x0D0E0F10, 0x11121314,
0x15161718, 0x191A1B1C, 0x1D1E1F20, 0x212223FF, 0xFFFFFFFF,
};
s32 D_80077290[] = {
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,
};
char* D_80077390[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",
};
char* D_800773D8[6] = {
"Unimplemented operation",
"Invalid operation",
"Division by zero",
"Overflow",
"Underflow",
"Inexact operation",
};
INCLUDE_ASM(s32, "crash", crash_delay_msec);
INCLUDE_ASM(s32, "crash", func_8002BFB0);
INCLUDE_ASM(s32, "crash", func_8002C054);
INCLUDE_ASM(s32, "crash", func_8002C1D4);
INCLUDE_ASM(s32, "crash", crash_printf_string);
INCLUDE_ASM(s32, "crash", crash_print_fpr);
INCLUDE_ASM(s32, "crash", func_8002C324);
INCLUDE_ASM(s32, "crash", crash_show_handler);
INCLUDE_ASM(s32, "crash", func_8002C7B0);
INCLUDE_ASM(s32, "crash", crash_monitor_thread);
void func_8002C890(s32 arg0, s16 arg1, s16 arg2) {
D_8009BB30.unk_9CC = arg0 | 0xA0000000;
D_8009BB30.unk_9D0 = arg1;
D_8009BB30.unk_9D2 = arg2;
}
INCLUDE_ASM(s32, "crash", crash_create_monitor);
INCLUDE_ASM(s32, "crash", func_8002C94C);

357
src/crash_screen.c Normal file
View File

@ -0,0 +1,357 @@
#include "common.h"
#include "stdlib/stdarg.h"
typedef struct {
/* 0x000 */ OSThread thread;
/* 0x1B0 */ char stack[0x800];
/* 0x9B0 */ OSMesgQueue queue;
/* 0x9C8 */ OSMesg mesg;
/* 0x9CC */ u16* frameBuf;
/* 0x9D0 */ u16 width;
/* 0x9D2 */ u16 height;
} CrashScreen; // size = 0x9D4
extern CrashScreen gCrashScreen; // bss, externed for now until issues are figured out
u8 gCrashScreencharToGlyph[128] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, 43, -1, -1, 37, 38, -1, 42,
-1, 39, 44, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 36, -1, -1, -1, -1, 40, -1, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1,
};
u32 gCrashScreenFont[] = {
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* gFaultCauses[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* gFPCSRFaultCauses[6] = {
"Unimplemented operation",
"Invalid operation",
"Division by zero",
"Overflow",
"Underflow",
"Inexact operation",
};
void crash_screen_sleep(s32 ms) {
u64 cycles = ms * 1000LL * 46875000LL / 1000000ULL;
osSetTime(0);
while (osGetTime() < cycles) {
// wait
}
}
void crash_screen_draw_rect(s32 x, s32 y, s32 width, s32 height) {
u16* ptr;
s32 i;
s32 j;
if (gCrashScreen.width == (SCREEN_WIDTH * 2)) {
x <<= 1;
y <<= 1;
width <<= 1;
height <<= 1;
}
ptr = gCrashScreen.frameBuf + gCrashScreen.width * y + x;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
*ptr = ((*ptr & 0xE738) >> 2) | 1;
ptr++;
}
ptr += gCrashScreen.width - width;
}
}
void crash_screen_draw_glyph(s32 x, s32 y, s32 glyph) {
s32 shift = ((glyph % 5) * 6);
u16 width = gCrashScreen.width;
const u32* data = &gCrashScreenFont[glyph / 5 * 7];
s32 i;
s32 j;
if (width == SCREEN_WIDTH) {
u16* ptr = gCrashScreen.frameBuf + (gCrashScreen.width) * y + x;
for (i = 0; i < 7; i++) {
u32 bit = 0x80000000U >> shift;
u32 rowMask = *data++;
for (j = 0; j < 6; j++) {
*ptr++ = (bit & rowMask) ? 0xFFFF : 1;
bit >>= 1;
}
ptr += gCrashScreen.width - 6;
}
} else if (width == (SCREEN_WIDTH * 2)) {
u16* ptr = gCrashScreen.frameBuf + (y * 0x500) + (x * 2);
for (i = 0; i < 7; i++) {
u32 bit = 0x80000000U >> shift;
u32 rowMask = *data++;
for (j = 0; j < 6; j++) {
u16 temp = (bit & rowMask) ? 0xFFFF : 1;
ptr[0] = temp;
ptr[1] = temp;
ptr[(SCREEN_WIDTH * 2)] = temp;
ptr[(SCREEN_WIDTH * 2) + 1] = temp;
ptr += 2;
bit >>= 1;
}
ptr += (0x9E8 / 2);
}
}
}
void* crash_screen_copy_to_buf(void* dest, const char* src, u32 size) {
memcpy(dest, src, size);
return dest + size;
}
void crash_screen_printf(s32 x, s32 y, const char* fmt, ...) {
u8* ptr;
u32 glyph;
s32 size;
u8 buf[0x100];
va_list args;
va_start(args, fmt);
size = _Printf(crash_screen_copy_to_buf, buf, fmt, args);
if (size > 0) {
ptr = buf;
while (size > 0) {
u8* charToGlyph = gCrashScreencharToGlyph;
glyph = charToGlyph[*ptr & 0x7F];
if (glyph != 0xFF) {
crash_screen_draw_glyph(x, y, glyph);
}
x += 6;
size--;
ptr++;
}
}
va_end(args);
}
void crash_screen_print_fpr(s32 x, s32 y, s32 regNum, void* addr) {
u32 bits = *(u32*)addr;
s32 exponent = ((bits & 0x7F800000U) >> 0x17) - 0x7F;
if ((exponent >= -0x7E && exponent <= 0x7F) || bits == 0) {
crash_screen_printf(x, y, "F%02d:%+.3e", regNum, *(f32*)addr);
} else {
crash_screen_printf(x, y, "F%02d:---------", regNum);
}
}
void crash_screen_print_fpcsr(u32 value) {
s32 i;
u32 flag = 0x20000;
crash_screen_printf(30, 155, "FPCSR:%08XH", value);
for (i = 0; i < 6;) {
if (value & flag) {
crash_screen_printf(132, 155, "(%s)", gFPCSRFaultCauses[i]);
break;
do {} while (0);
}
i++;
flag >>= 1;
}
}
void crash_screen_draw(OSThread* faultedThread) {
s16 causeIndex;
__OSThreadContext* ctx;
ctx = &faultedThread->context;
causeIndex = ((faultedThread->context.cause >> 2) & 0x1F);
if (causeIndex == 23) {
causeIndex = 16;
}
if (causeIndex == 31) {
causeIndex = 17;
}
osWritebackDCacheAll();
crash_screen_draw_rect(25, 20, 270, 25);
crash_screen_printf(30, 25, "THREAD:%d (%s)", faultedThread->id, gFaultCauses[causeIndex]);
crash_screen_printf(30, 35, "PC:%08XH SR:%08XH VA:%08XH", ctx->pc, ctx->sr, ctx->badvaddr);
crash_screen_sleep(2000);
osViBlack(0);
osViRepeatLine(0);
osViSwapBuffer(gCrashScreen.frameBuf);
crash_screen_draw_rect(25, 45, 270, 185);
crash_screen_printf(30, 50, "AT:%08XH V0:%08XH V1:%08XH", (u32)ctx->at, (u32)ctx->v0, (u32)ctx->v1);
crash_screen_printf(30, 60, "A0:%08XH A1:%08XH A2:%08XH", (u32)ctx->a0, (u32)ctx->a1, (u32)ctx->a2);
crash_screen_printf(30, 70, "A3:%08XH T0:%08XH T1:%08XH", (u32)ctx->a3, (u32)ctx->t0, (u32)ctx->t1);
crash_screen_printf(30, 80, "T2:%08XH T3:%08XH T4:%08XH", (u32)ctx->t2, (u32)ctx->t3, (u32)ctx->t4);
crash_screen_printf(30, 90, "T5:%08XH T6:%08XH T7:%08XH", (u32)ctx->t5, (u32)ctx->t6, (u32)ctx->t7);
crash_screen_printf(30, 100, "S0:%08XH S1:%08XH S2:%08XH", (u32)ctx->s0, (u32)ctx->s1, (u32)ctx->s2);
crash_screen_printf(30, 110, "S3:%08XH S4:%08XH S5:%08XH", (u32)ctx->s3, (u32)ctx->s4, (u32)ctx->s5);
crash_screen_printf(30, 120, "S6:%08XH S7:%08XH T8:%08XH", (u32)ctx->s6, (u32)ctx->s7, (u32)ctx->t8);
crash_screen_printf(30, 130, "T9:%08XH GP:%08XH SP:%08XH", (u32)ctx->t9, (u32)ctx->gp, (u32)ctx->sp);
crash_screen_printf(30, 140, "S8:%08XH RA:%08XH", (u32)ctx->s8, (u32)ctx->ra);
crash_screen_print_fpcsr(ctx->fpcsr);
crash_screen_print_fpr(30, 170, 0, &ctx->fp0.f.f_even);
crash_screen_print_fpr(120, 170, 2, &ctx->fp2.f.f_even);
crash_screen_print_fpr(210, 170, 4, &ctx->fp4.f.f_even);
crash_screen_print_fpr(30, 180, 6, &ctx->fp6.f.f_even);
crash_screen_print_fpr(120, 180, 8, &ctx->fp8.f.f_even);
crash_screen_print_fpr(210, 180, 10, &ctx->fp10.f.f_even);
crash_screen_print_fpr(30, 190, 12, &ctx->fp12.f.f_even);
crash_screen_print_fpr(120, 190, 14, &ctx->fp14.f.f_even);
crash_screen_print_fpr(210, 190, 16, &ctx->fp16.f.f_even);
crash_screen_print_fpr(30, 200, 18, &ctx->fp18.f.f_even);
crash_screen_print_fpr(120, 200, 20, &ctx->fp20.f.f_even);
crash_screen_print_fpr(210, 200, 22, &ctx->fp22.f.f_even);
crash_screen_print_fpr(30, 210, 24, &ctx->fp24.f.f_even);
crash_screen_print_fpr(120, 210, 26, &ctx->fp26.f.f_even);
crash_screen_print_fpr(210, 210, 28, &ctx->fp28.f.f_even);
crash_screen_print_fpr(30, 220, 30, &ctx->fp30.f.f_even);
crash_screen_sleep(500);
// all of these null terminators needed to pad the rodata section for this file
// can potentially fix this problem in another way?
crash_screen_printf(210, 140, "MM:%08XH\0\0\0\0\0\0\0\0", *(u32*)ctx->pc);
}
OSThread* crash_screen_get_faulted_thread(void) {
OSThread* thread = osGetActiveQueue();
while (thread->priority != -1) {
if (thread->priority > 0 && thread->priority < 0x7F && (thread->flags & 3)) {
return thread;
}
thread = thread->tlnext;
}
return NULL;
}
void crash_screen_thread_entry(void* unused) {
OSMesg mesg;
OSThread* faultedThread;
osSetEventMesg(OS_EVENT_CPU_BREAK, &gCrashScreen.queue, (OSMesg)1);
osSetEventMesg(OS_EVENT_FAULT, &gCrashScreen.queue, (OSMesg)2);
do {
osRecvMesg(&gCrashScreen.queue, &mesg, 1);
faultedThread = crash_screen_get_faulted_thread();
} while (faultedThread == NULL);
osStopThread(faultedThread);
crash_screen_draw(faultedThread);
while (TRUE) {}
}
void crash_screen_set_draw_info(u16* frameBufPtr, s16 width, s16 height) {
gCrashScreen.frameBuf = (u16*)((u32)frameBufPtr | 0xA0000000);
gCrashScreen.width = width;
gCrashScreen.height = height;
}
void crash_screen_init(void) {
gCrashScreen.width = SCREEN_WIDTH;
gCrashScreen.height = 16;
gCrashScreen.frameBuf = (u16*)((osMemSize | 0xA0000000) - ((SCREEN_WIDTH * SCREEN_HEIGHT) * 2));
osCreateMesgQueue(&gCrashScreen.queue, &gCrashScreen.mesg, 1);
osCreateThread(&gCrashScreen.thread, 2, crash_screen_thread_entry, NULL,
gCrashScreen.stack + sizeof(gCrashScreen.stack), 0x80);
osStartThread(&gCrashScreen.thread);
}
// unused
void crash_screen_printf_with_bg(s16 x, s16 y, const char* fmt, ...) {
u8* ptr;
u32 glyph;
s32 size;
u8 buf[0x100];
va_list args;
va_start(args, fmt);
size = _Printf(crash_screen_copy_to_buf, buf, fmt, args);
if (size > 0) {
crash_screen_draw_rect(x - 6, y - 6, (size + 2) * 6, 19);
ptr = buf;
while (size > 0) {
u8* charToGlyph = gCrashScreencharToGlyph;
glyph = charToGlyph[*ptr & 0x7F];
if (glyph != 0xFF) {
crash_screen_draw_glyph(x, y, glyph);
}
x += 6;
size--;
ptr++;
}
}
va_end(args);
}

View File

@ -13,7 +13,7 @@ typedef struct {
#define gISVDbgPrnAdrs ((ISVDbg*) 0xb3ff0000)
u32 is_debug_print(void* arg0, const unsigned char* str, s32 count);
u32 is_debug_print(void* arg0, const unsigned char* str, u32 count);
void is_debug_init(void) {
osEPiWriteIo(nuPiCartHandle, (u32) &gISVDbgPrnAdrs->put, 0);
@ -42,7 +42,7 @@ void rmonPrintf(const char* fmt, ...) {
_Printf(is_debug_print, NULL, fmt, args);
}
u32 is_debug_print(void* arg0, const unsigned char* str, s32 count) {
u32 is_debug_print(void* arg0, const unsigned char* str, u32 count) {
u32 data;
s32 pos;
s32 start;

View File

@ -4,7 +4,7 @@
// TODO: use src/is_debug.c instead as this file is identical between versions
u32 func_80025D74(void* arg0, const unsigned char* str, s32 count);
u32 func_80025D74(void* arg0, const unsigned char* str, u32 count);
void func_80025C60(void) {
OSPiHandle** handle = &nuPiCartHandle;
@ -35,7 +35,7 @@ void func_80025D38(const char* fmt, ...) {
_Printf(&func_80025D74, NULL, fmt, args);
}
u32 func_80025D74(void* arg0, const unsigned char* str, s32 count) {
u32 func_80025D74(void* arg0, const unsigned char* str, u32 count) {
u32 data;
s32 pos;
s32 start;

View File

@ -232,7 +232,7 @@ void gfx_draw_frame(void) {
nuGfxTaskStart(gDisplayContext->mainGfx, (u32)(gMasterGfxPos - gDisplayContext->mainGfx) * 8, NU_GFX_UCODE_F3DEX2,
NU_SC_TASK_LODABLE | NU_SC_SWAPBUFFER);
gCurrentDisplayContextIndex = gCurrentDisplayContextIndex ^ 1;
func_8002C890(nuGfxCfb_ptr, SCREEN_WIDTH, SCREEN_HEIGHT);
crash_screen_set_draw_info(nuGfxCfb_ptr, SCREEN_WIDTH, SCREEN_HEIGHT);
}
void load_engine_data(void) {
@ -475,8 +475,8 @@ void gfx_draw_background(void) {
for (i = 0; i < 40; i++) {
gDPLoadTextureTile(gMasterGfxPos++, nuGfxZBuffer + (i * 0x780), G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH,
SCREEN_HEIGHT, 0, 0, SCREEN_WIDTH - 1, 5, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
SCREEN_HEIGHT, 0, 0, SCREEN_WIDTH - 1, 5, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gMasterGfxPos++, 0, i * a, 0x0500, a + (i * 0x18), G_TX_RENDERTILE,
-0x0020, 0, 0x0400, 0x0400);
gDPPipeSync(gMasterGfxPos++);

View File

@ -1,43 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel crash_create_monitor
/* 7CB0 8002C8B0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 7CB4 8002C8B4 3C07FFFD */ lui $a3, 0xfffd
/* 7CB8 8002C8B8 34E7A800 */ ori $a3, $a3, 0xa800
/* 7CBC 8002C8BC AFB00018 */ sw $s0, 0x18($sp)
/* 7CC0 8002C8C0 3C10800A */ lui $s0, %hi(D_8009BB30)
/* 7CC4 8002C8C4 2610BB30 */ addiu $s0, $s0, %lo(D_8009BB30)
/* 7CC8 8002C8C8 AFB1001C */ sw $s1, 0x1c($sp)
/* 7CCC 8002C8CC 261109B0 */ addiu $s1, $s0, 0x9b0
/* 7CD0 8002C8D0 0220202D */ daddu $a0, $s1, $zero
/* 7CD4 8002C8D4 260509C8 */ addiu $a1, $s0, 0x9c8
/* 7CD8 8002C8D8 24060001 */ addiu $a2, $zero, 1
/* 7CDC 8002C8DC 24020140 */ addiu $v0, $zero, 0x140
/* 7CE0 8002C8E0 AFBF0020 */ sw $ra, 0x20($sp)
/* 7CE4 8002C8E4 A60209D0 */ sh $v0, 0x9d0($s0)
/* 7CE8 8002C8E8 24020010 */ addiu $v0, $zero, 0x10
/* 7CEC 8002C8EC A60209D2 */ sh $v0, 0x9d2($s0)
/* 7CF0 8002C8F0 3C028000 */ lui $v0, %hi(D_80000318)
/* 7CF4 8002C8F4 8C420318 */ lw $v0, %lo(D_80000318)($v0)
/* 7CF8 8002C8F8 3C03A000 */ lui $v1, 0xa000
/* 7CFC 8002C8FC 00431025 */ or $v0, $v0, $v1
/* 7D00 8002C900 00471021 */ addu $v0, $v0, $a3
/* 7D04 8002C904 0C019560 */ jal osCreateMesgQueue
/* 7D08 8002C908 AE0209CC */ sw $v0, 0x9cc($s0)
/* 7D0C 8002C90C 0200202D */ daddu $a0, $s0, $zero
/* 7D10 8002C910 24050002 */ addiu $a1, $zero, 2
/* 7D14 8002C914 3C068003 */ lui $a2, %hi(crash_monitor_thread)
/* 7D18 8002C918 24C6C81C */ addiu $a2, $a2, %lo(crash_monitor_thread)
/* 7D1C 8002C91C 24020080 */ addiu $v0, $zero, 0x80
/* 7D20 8002C920 0000382D */ daddu $a3, $zero, $zero
/* 7D24 8002C924 AFB10010 */ sw $s1, 0x10($sp)
/* 7D28 8002C928 0C019798 */ jal osCreateThread
/* 7D2C 8002C92C AFA20014 */ sw $v0, 0x14($sp)
/* 7D30 8002C930 0C019808 */ jal osStartThread
/* 7D34 8002C934 0200202D */ daddu $a0, $s0, $zero
/* 7D38 8002C938 8FBF0020 */ lw $ra, 0x20($sp)
/* 7D3C 8002C93C 8FB1001C */ lw $s1, 0x1c($sp)
/* 7D40 8002C940 8FB00018 */ lw $s0, 0x18($sp)
/* 7D44 8002C944 03E00008 */ jr $ra
/* 7D48 8002C948 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,36 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .text
glabel crash_delay_msec
/* 7340 8002BF40 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 7344 8002BF44 3402B71B */ ori $v0, $zero, 0xb71b
/* 7348 8002BF48 00820018 */ mult $a0, $v0
/* 734C 8002BF4C 0000202D */ daddu $a0, $zero, $zero
/* 7350 8002BF50 0000282D */ daddu $a1, $zero, $zero
/* 7354 8002BF54 AFBF0018 */ sw $ra, 0x18($sp)
/* 7358 8002BF58 AFB10014 */ sw $s1, 0x14($sp)
/* 735C 8002BF5C AFB00010 */ sw $s0, 0x10($sp)
/* 7360 8002BF60 00008010 */ mfhi $s0
/* 7364 8002BF64 00008812 */ mflo $s1
/* 7368 8002BF68 0C0198CC */ jal osSetTime
/* 736C 8002BF6C 00000000 */ nop
.L8002BF70:
/* 7370 8002BF70 0C0198A8 */ jal osGetTime
/* 7374 8002BF74 00000000 */ nop
/* 7378 8002BF78 0040202D */ daddu $a0, $v0, $zero
/* 737C 8002BF7C 0060282D */ daddu $a1, $v1, $zero
/* 7380 8002BF80 0090102B */ sltu $v0, $a0, $s0
/* 7384 8002BF84 1440FFFA */ bnez $v0, .L8002BF70
/* 7388 8002BF88 00000000 */ nop
/* 738C 8002BF8C 16040003 */ bne $s0, $a0, .L8002BF9C
/* 7390 8002BF90 00B1102B */ sltu $v0, $a1, $s1
/* 7394 8002BF94 1440FFF6 */ bnez $v0, .L8002BF70
/* 7398 8002BF98 00000000 */ nop
.L8002BF9C:
/* 739C 8002BF9C 8FBF0018 */ lw $ra, 0x18($sp)
/* 73A0 8002BFA0 8FB10014 */ lw $s1, 0x14($sp)
/* 73A4 8002BFA4 8FB00010 */ lw $s0, 0x10($sp)
/* 73A8 8002BFA8 03E00008 */ jr $ra
/* 73AC 8002BFAC 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,35 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel crash_monitor_thread
/* 7C1C 8002C81C 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 7C20 8002C820 2404000A */ addiu $a0, $zero, 0xa
/* 7C24 8002C824 AFB00018 */ sw $s0, 0x18($sp)
/* 7C28 8002C828 3C10800A */ lui $s0, %hi(D_8009C4E0)
/* 7C2C 8002C82C 2610C4E0 */ addiu $s0, $s0, %lo(D_8009C4E0)
/* 7C30 8002C830 0200282D */ daddu $a1, $s0, $zero
/* 7C34 8002C834 AFBF001C */ sw $ra, 0x1c($sp)
/* 7C38 8002C838 0C019654 */ jal osSetEventMesg
/* 7C3C 8002C83C 24060001 */ addiu $a2, $zero, 1
/* 7C40 8002C840 2404000C */ addiu $a0, $zero, 0xc
/* 7C44 8002C844 0200282D */ daddu $a1, $s0, $zero
/* 7C48 8002C848 0C019654 */ jal osSetEventMesg
/* 7C4C 8002C84C 24060002 */ addiu $a2, $zero, 2
.L8002C850:
/* 7C50 8002C850 3C04800A */ lui $a0, %hi(D_8009C4E0)
/* 7C54 8002C854 2484C4E0 */ addiu $a0, $a0, %lo(D_8009C4E0)
/* 7C58 8002C858 27A50010 */ addiu $a1, $sp, 0x10
/* 7C5C 8002C85C 0C0195BC */ jal osRecvMesg
/* 7C60 8002C860 24060001 */ addiu $a2, $zero, 1
/* 7C64 8002C864 0C00B1EC */ jal func_8002C7B0
/* 7C68 8002C868 00000000 */ nop
/* 7C6C 8002C86C 0040802D */ daddu $s0, $v0, $zero
/* 7C70 8002C870 1200FFF7 */ beqz $s0, .L8002C850
/* 7C74 8002C874 00000000 */ nop
/* 7C78 8002C878 0C019850 */ jal osStopThread
/* 7C7C 8002C87C 0200202D */ daddu $a0, $s0, $zero
/* 7C80 8002C880 0C00B0EC */ jal crash_show_handler
/* 7C84 8002C884 0200202D */ daddu $a0, $s0, $zero
.L8002C888:
/* 7C88 8002C888 0800B222 */ j .L8002C888
/* 7C8C 8002C88C 00000000 */ nop

View File

@ -1,44 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098034
.ascii "F%02d:%+.3e\0"
glabel D_80098040
.ascii "F%02d:---------\0"
.section .text
glabel crash_print_fpr
/* 76B8 8002C2B8 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 76BC 8002C2BC AFBF0018 */ sw $ra, 0x18($sp)
/* 76C0 8002C2C0 8CE30000 */ lw $v1, ($a3)
/* 76C4 8002C2C4 000315C2 */ srl $v0, $v1, 0x17
/* 76C8 8002C2C8 304200FF */ andi $v0, $v0, 0xff
/* 76CC 8002C2CC 2442FFFF */ addiu $v0, $v0, -1
/* 76D0 8002C2D0 2C4200FE */ sltiu $v0, $v0, 0xfe
/* 76D4 8002C2D4 14400003 */ bnez $v0, .L8002C2E4
/* 76D8 8002C2D8 00C0402D */ daddu $t0, $a2, $zero
/* 76DC 8002C2DC 1460000A */ bnez $v1, .L8002C308
/* 76E0 8002C2E0 00000000 */ nop
.L8002C2E4:
/* 76E4 8002C2E4 3C06800A */ lui $a2, %hi(D_80098034)
/* 76E8 8002C2E8 24C68034 */ addiu $a2, $a2, %lo(D_80098034)
/* 76EC 8002C2EC C4E00000 */ lwc1 $f0, ($a3)
/* 76F0 8002C2F0 46000021 */ cvt.d.s $f0, $f0
/* 76F4 8002C2F4 F7A00010 */ sdc1 $f0, 0x10($sp)
/* 76F8 8002C2F8 0C00B082 */ jal crash_printf_string
/* 76FC 8002C2FC 0100382D */ daddu $a3, $t0, $zero
/* 7700 8002C300 0800B0C6 */ j .L8002C318
/* 7704 8002C304 00000000 */ nop
.L8002C308:
/* 7708 8002C308 3C06800A */ lui $a2, %hi(D_80098040)
/* 770C 8002C30C 24C68040 */ addiu $a2, $a2, %lo(D_80098040)
/* 7710 8002C310 0C00B082 */ jal crash_printf_string
/* 7714 8002C314 0100382D */ daddu $a3, $t0, $zero
.L8002C318:
/* 7718 8002C318 8FBF0018 */ lw $ra, 0x18($sp)
/* 771C 8002C31C 03E00008 */ jr $ra
/* 7720 8002C320 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,51 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel crash_printf_string
/* 7608 8002C208 AFA60008 */ sw $a2, 8($sp)
/* 760C 8002C20C AFA7000C */ sw $a3, 0xc($sp)
/* 7610 8002C210 27BDFED0 */ addiu $sp, $sp, -0x130
/* 7614 8002C214 AFB20118 */ sw $s2, 0x118($sp)
/* 7618 8002C218 0080902D */ daddu $s2, $a0, $zero
/* 761C 8002C21C AFB50124 */ sw $s5, 0x124($sp)
/* 7620 8002C220 00A0A82D */ daddu $s5, $a1, $zero
/* 7624 8002C224 3C048003 */ lui $a0, %hi(func_8002C1D4)
/* 7628 8002C228 2484C1D4 */ addiu $a0, $a0, %lo(func_8002C1D4)
/* 762C 8002C22C 27A50010 */ addiu $a1, $sp, 0x10
/* 7630 8002C230 27A7013C */ addiu $a3, $sp, 0x13c
/* 7634 8002C234 AFBF0128 */ sw $ra, 0x128($sp)
/* 7638 8002C238 AFB40120 */ sw $s4, 0x120($sp)
/* 763C 8002C23C AFB3011C */ sw $s3, 0x11c($sp)
/* 7640 8002C240 AFB10114 */ sw $s1, 0x114($sp)
/* 7644 8002C244 0C0192A8 */ jal _Printf
/* 7648 8002C248 AFB00110 */ sw $s0, 0x110($sp)
/* 764C 8002C24C 0040802D */ daddu $s0, $v0, $zero
/* 7650 8002C250 1A000010 */ blez $s0, .L8002C294
/* 7654 8002C254 27B10010 */ addiu $s1, $sp, 0x10
/* 7658 8002C258 3C148007 */ lui $s4, %hi(D_80077210)
/* 765C 8002C25C 26947210 */ addiu $s4, $s4, %lo(D_80077210)
/* 7660 8002C260 241300FF */ addiu $s3, $zero, 0xff
.L8002C264:
/* 7664 8002C264 92220000 */ lbu $v0, ($s1)
/* 7668 8002C268 3042007F */ andi $v0, $v0, 0x7f
/* 766C 8002C26C 00541021 */ addu $v0, $v0, $s4
/* 7670 8002C270 90460000 */ lbu $a2, ($v0)
/* 7674 8002C274 10D30003 */ beq $a2, $s3, .L8002C284
/* 7678 8002C278 0240202D */ daddu $a0, $s2, $zero
/* 767C 8002C27C 0C00B015 */ jal func_8002C054
/* 7680 8002C280 02A0282D */ daddu $a1, $s5, $zero
.L8002C284:
/* 7684 8002C284 26520006 */ addiu $s2, $s2, 6
/* 7688 8002C288 2610FFFF */ addiu $s0, $s0, -1
/* 768C 8002C28C 1E00FFF5 */ bgtz $s0, .L8002C264
/* 7690 8002C290 26310001 */ addiu $s1, $s1, 1
.L8002C294:
/* 7694 8002C294 8FBF0128 */ lw $ra, 0x128($sp)
/* 7698 8002C298 8FB50124 */ lw $s5, 0x124($sp)
/* 769C 8002C29C 8FB40120 */ lw $s4, 0x120($sp)
/* 76A0 8002C2A0 8FB3011C */ lw $s3, 0x11c($sp)
/* 76A4 8002C2A4 8FB20118 */ lw $s2, 0x118($sp)
/* 76A8 8002C2A8 8FB10114 */ lw $s1, 0x114($sp)
/* 76AC 8002C2AC 8FB00110 */ lw $s0, 0x110($sp)
/* 76B0 8002C2B0 03E00008 */ jr $ra
/* 76B4 8002C2B4 27BD0130 */ addiu $sp, $sp, 0x130

View File

@ -1,305 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098064
.ascii "THREAD:%d (%s)\0"
glabel D_80098074
.ascii "PC:%08XH SR:%08XH VA:%08XH\0\0"
glabel D_80098094
.ascii "AT:%08XH V0:%08XH V1:%08XH\0\0"
glabel D_800980B4
.ascii "A0:%08XH A1:%08XH A2:%08XH\0\0"
glabel D_800980D4
.ascii "A3:%08XH T0:%08XH T1:%08XH\0\0"
glabel D_800980F4
.ascii "T2:%08XH T3:%08XH T4:%08XH\0\0"
glabel D_80098114
.ascii "T5:%08XH T6:%08XH T7:%08XH\0\0"
glabel D_80098134
.ascii "S0:%08XH S1:%08XH S2:%08XH\0\0"
glabel D_80098154
.ascii "S3:%08XH S4:%08XH S5:%08XH\0\0"
glabel D_80098174
.ascii "S6:%08XH S7:%08XH T8:%08XH\0\0"
glabel D_80098194
.ascii "T9:%08XH GP:%08XH SP:%08XH\0\0"
glabel D_800981B4
.ascii "S8:%08XH RA:%08XH\0"
glabel D_800981C8
.ascii "MM:%08XH\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
.section .text
glabel crash_show_handler
/* 77B0 8002C3B0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 77B4 8002C3B4 AFB1001C */ sw $s1, 0x1c($sp)
/* 77B8 8002C3B8 0080882D */ daddu $s1, $a0, $zero
/* 77BC 8002C3BC AFB20020 */ sw $s2, 0x20($sp)
/* 77C0 8002C3C0 26320020 */ addiu $s2, $s1, 0x20
/* 77C4 8002C3C4 AFBF0024 */ sw $ra, 0x24($sp)
/* 77C8 8002C3C8 AFB00018 */ sw $s0, 0x18($sp)
/* 77CC 8002C3CC 8E220120 */ lw $v0, 0x120($s1)
/* 77D0 8002C3D0 24030017 */ addiu $v1, $zero, 0x17
/* 77D4 8002C3D4 00021082 */ srl $v0, $v0, 2
/* 77D8 8002C3D8 3042001F */ andi $v0, $v0, 0x1f
/* 77DC 8002C3DC 14430002 */ bne $v0, $v1, .L8002C3E8
/* 77E0 8002C3E0 0040802D */ daddu $s0, $v0, $zero
/* 77E4 8002C3E4 24100010 */ addiu $s0, $zero, 0x10
.L8002C3E8:
/* 77E8 8002C3E8 2402001F */ addiu $v0, $zero, 0x1f
/* 77EC 8002C3EC 52020001 */ beql $s0, $v0, .L8002C3F4
/* 77F0 8002C3F0 24100011 */ addiu $s0, $zero, 0x11
.L8002C3F4:
/* 77F4 8002C3F4 0C018634 */ jal osWritebackDCacheAll
/* 77F8 8002C3F8 00000000 */ nop
/* 77FC 8002C3FC 24040019 */ addiu $a0, $zero, 0x19
/* 7800 8002C400 24050014 */ addiu $a1, $zero, 0x14
/* 7804 8002C404 2406010E */ addiu $a2, $zero, 0x10e
/* 7808 8002C408 0C00AFEC */ jal func_8002BFB0
/* 780C 8002C40C 0080382D */ daddu $a3, $a0, $zero
/* 7810 8002C410 2404001E */ addiu $a0, $zero, 0x1e
/* 7814 8002C414 00101080 */ sll $v0, $s0, 2
/* 7818 8002C418 3C018007 */ lui $at, %hi(D_80077390)
/* 781C 8002C41C 00220821 */ addu $at, $at, $v0
/* 7820 8002C420 8C227390 */ lw $v0, %lo(D_80077390)($at)
/* 7824 8002C424 AFA20010 */ sw $v0, 0x10($sp)
/* 7828 8002C428 8E270014 */ lw $a3, 0x14($s1)
/* 782C 8002C42C 3C06800A */ lui $a2, %hi(D_80098064)
/* 7830 8002C430 24C68064 */ addiu $a2, $a2, %lo(D_80098064)
/* 7834 8002C434 0C00B082 */ jal crash_printf_string
/* 7838 8002C438 24050019 */ addiu $a1, $zero, 0x19
/* 783C 8002C43C 8E220118 */ lw $v0, 0x118($s1)
/* 7840 8002C440 2404001E */ addiu $a0, $zero, 0x1e
/* 7844 8002C444 AFA20010 */ sw $v0, 0x10($sp)
/* 7848 8002C448 8E220124 */ lw $v0, 0x124($s1)
/* 784C 8002C44C AFA20014 */ sw $v0, 0x14($sp)
/* 7850 8002C450 8E27011C */ lw $a3, 0x11c($s1)
/* 7854 8002C454 3C06800A */ lui $a2, %hi(D_80098074)
/* 7858 8002C458 24C68074 */ addiu $a2, $a2, %lo(D_80098074)
/* 785C 8002C45C 0C00B082 */ jal crash_printf_string
/* 7860 8002C460 24050023 */ addiu $a1, $zero, 0x23
/* 7864 8002C464 0C00AFD0 */ jal crash_delay_msec
/* 7868 8002C468 240407D0 */ addiu $a0, $zero, 0x7d0
/* 786C 8002C46C 0C019CE0 */ jal osViBlack
/* 7870 8002C470 0000202D */ daddu $a0, $zero, $zero
/* 7874 8002C474 0C019CF8 */ jal osViRepeatLine
/* 7878 8002C478 0000202D */ daddu $a0, $zero, $zero
/* 787C 8002C47C 3C04800A */ lui $a0, %hi(D_8009C4FC)
/* 7880 8002C480 8C84C4FC */ lw $a0, %lo(D_8009C4FC)($a0)
/* 7884 8002C484 0C019C08 */ jal osViSwapBuffer
/* 7888 8002C488 00000000 */ nop
/* 788C 8002C48C 24040019 */ addiu $a0, $zero, 0x19
/* 7890 8002C490 2405002D */ addiu $a1, $zero, 0x2d
/* 7894 8002C494 2406010E */ addiu $a2, $zero, 0x10e
/* 7898 8002C498 0C00AFEC */ jal func_8002BFB0
/* 789C 8002C49C 240700B9 */ addiu $a3, $zero, 0xb9
/* 78A0 8002C4A0 8E22002C */ lw $v0, 0x2c($s1)
/* 78A4 8002C4A4 2404001E */ addiu $a0, $zero, 0x1e
/* 78A8 8002C4A8 AFA20010 */ sw $v0, 0x10($sp)
/* 78AC 8002C4AC 8E220034 */ lw $v0, 0x34($s1)
/* 78B0 8002C4B0 AFA20014 */ sw $v0, 0x14($sp)
/* 78B4 8002C4B4 8E270024 */ lw $a3, 0x24($s1)
/* 78B8 8002C4B8 3C06800A */ lui $a2, %hi(D_80098094)
/* 78BC 8002C4BC 24C68094 */ addiu $a2, $a2, %lo(D_80098094)
/* 78C0 8002C4C0 0C00B082 */ jal crash_printf_string
/* 78C4 8002C4C4 24050032 */ addiu $a1, $zero, 0x32
/* 78C8 8002C4C8 8E220044 */ lw $v0, 0x44($s1)
/* 78CC 8002C4CC 2404001E */ addiu $a0, $zero, 0x1e
/* 78D0 8002C4D0 AFA20010 */ sw $v0, 0x10($sp)
/* 78D4 8002C4D4 8E22004C */ lw $v0, 0x4c($s1)
/* 78D8 8002C4D8 AFA20014 */ sw $v0, 0x14($sp)
/* 78DC 8002C4DC 8E27003C */ lw $a3, 0x3c($s1)
/* 78E0 8002C4E0 3C06800A */ lui $a2, %hi(D_800980B4)
/* 78E4 8002C4E4 24C680B4 */ addiu $a2, $a2, %lo(D_800980B4)
/* 78E8 8002C4E8 0C00B082 */ jal crash_printf_string
/* 78EC 8002C4EC 2405003C */ addiu $a1, $zero, 0x3c
/* 78F0 8002C4F0 8E22005C */ lw $v0, 0x5c($s1)
/* 78F4 8002C4F4 2404001E */ addiu $a0, $zero, 0x1e
/* 78F8 8002C4F8 AFA20010 */ sw $v0, 0x10($sp)
/* 78FC 8002C4FC 8E220064 */ lw $v0, 0x64($s1)
/* 7900 8002C500 AFA20014 */ sw $v0, 0x14($sp)
/* 7904 8002C504 8E270054 */ lw $a3, 0x54($s1)
/* 7908 8002C508 3C06800A */ lui $a2, %hi(D_800980D4)
/* 790C 8002C50C 24C680D4 */ addiu $a2, $a2, %lo(D_800980D4)
/* 7910 8002C510 0C00B082 */ jal crash_printf_string
/* 7914 8002C514 24050046 */ addiu $a1, $zero, 0x46
/* 7918 8002C518 8E220074 */ lw $v0, 0x74($s1)
/* 791C 8002C51C 2404001E */ addiu $a0, $zero, 0x1e
/* 7920 8002C520 AFA20010 */ sw $v0, 0x10($sp)
/* 7924 8002C524 8E22007C */ lw $v0, 0x7c($s1)
/* 7928 8002C528 AFA20014 */ sw $v0, 0x14($sp)
/* 792C 8002C52C 8E27006C */ lw $a3, 0x6c($s1)
/* 7930 8002C530 3C06800A */ lui $a2, %hi(D_800980F4)
/* 7934 8002C534 24C680F4 */ addiu $a2, $a2, %lo(D_800980F4)
/* 7938 8002C538 0C00B082 */ jal crash_printf_string
/* 793C 8002C53C 24050050 */ addiu $a1, $zero, 0x50
/* 7940 8002C540 8E22008C */ lw $v0, 0x8c($s1)
/* 7944 8002C544 2404001E */ addiu $a0, $zero, 0x1e
/* 7948 8002C548 AFA20010 */ sw $v0, 0x10($sp)
/* 794C 8002C54C 8E220094 */ lw $v0, 0x94($s1)
/* 7950 8002C550 AFA20014 */ sw $v0, 0x14($sp)
/* 7954 8002C554 8E270084 */ lw $a3, 0x84($s1)
/* 7958 8002C558 3C06800A */ lui $a2, %hi(D_80098114)
/* 795C 8002C55C 24C68114 */ addiu $a2, $a2, %lo(D_80098114)
/* 7960 8002C560 0C00B082 */ jal crash_printf_string
/* 7964 8002C564 2405005A */ addiu $a1, $zero, 0x5a
/* 7968 8002C568 8E2200A4 */ lw $v0, 0xa4($s1)
/* 796C 8002C56C 2404001E */ addiu $a0, $zero, 0x1e
/* 7970 8002C570 AFA20010 */ sw $v0, 0x10($sp)
/* 7974 8002C574 8E2200AC */ lw $v0, 0xac($s1)
/* 7978 8002C578 AFA20014 */ sw $v0, 0x14($sp)
/* 797C 8002C57C 8E27009C */ lw $a3, 0x9c($s1)
/* 7980 8002C580 3C06800A */ lui $a2, %hi(D_80098134)
/* 7984 8002C584 24C68134 */ addiu $a2, $a2, %lo(D_80098134)
/* 7988 8002C588 0C00B082 */ jal crash_printf_string
/* 798C 8002C58C 24050064 */ addiu $a1, $zero, 0x64
/* 7990 8002C590 8E2200BC */ lw $v0, 0xbc($s1)
/* 7994 8002C594 2404001E */ addiu $a0, $zero, 0x1e
/* 7998 8002C598 AFA20010 */ sw $v0, 0x10($sp)
/* 799C 8002C59C 8E2200C4 */ lw $v0, 0xc4($s1)
/* 79A0 8002C5A0 AFA20014 */ sw $v0, 0x14($sp)
/* 79A4 8002C5A4 8E2700B4 */ lw $a3, 0xb4($s1)
/* 79A8 8002C5A8 3C06800A */ lui $a2, %hi(D_80098154)
/* 79AC 8002C5AC 24C68154 */ addiu $a2, $a2, %lo(D_80098154)
/* 79B0 8002C5B0 0C00B082 */ jal crash_printf_string
/* 79B4 8002C5B4 2405006E */ addiu $a1, $zero, 0x6e
/* 79B8 8002C5B8 8E2200D4 */ lw $v0, 0xd4($s1)
/* 79BC 8002C5BC 2404001E */ addiu $a0, $zero, 0x1e
/* 79C0 8002C5C0 AFA20010 */ sw $v0, 0x10($sp)
/* 79C4 8002C5C4 8E2200DC */ lw $v0, 0xdc($s1)
/* 79C8 8002C5C8 AFA20014 */ sw $v0, 0x14($sp)
/* 79CC 8002C5CC 8E2700CC */ lw $a3, 0xcc($s1)
/* 79D0 8002C5D0 3C06800A */ lui $a2, %hi(D_80098174)
/* 79D4 8002C5D4 24C68174 */ addiu $a2, $a2, %lo(D_80098174)
/* 79D8 8002C5D8 0C00B082 */ jal crash_printf_string
/* 79DC 8002C5DC 24050078 */ addiu $a1, $zero, 0x78
/* 79E0 8002C5E0 8E2200EC */ lw $v0, 0xec($s1)
/* 79E4 8002C5E4 2404001E */ addiu $a0, $zero, 0x1e
/* 79E8 8002C5E8 AFA20010 */ sw $v0, 0x10($sp)
/* 79EC 8002C5EC 8E2200F4 */ lw $v0, 0xf4($s1)
/* 79F0 8002C5F0 AFA20014 */ sw $v0, 0x14($sp)
/* 79F4 8002C5F4 8E2700E4 */ lw $a3, 0xe4($s1)
/* 79F8 8002C5F8 3C06800A */ lui $a2, %hi(D_80098194)
/* 79FC 8002C5FC 24C68194 */ addiu $a2, $a2, %lo(D_80098194)
/* 7A00 8002C600 0C00B082 */ jal crash_printf_string
/* 7A04 8002C604 24050082 */ addiu $a1, $zero, 0x82
/* 7A08 8002C608 2404001E */ addiu $a0, $zero, 0x1e
/* 7A0C 8002C60C 8E220104 */ lw $v0, 0x104($s1)
/* 7A10 8002C610 AFA20010 */ sw $v0, 0x10($sp)
/* 7A14 8002C614 8E2700FC */ lw $a3, 0xfc($s1)
/* 7A18 8002C618 3C06800A */ lui $a2, %hi(D_800981B4)
/* 7A1C 8002C61C 24C681B4 */ addiu $a2, $a2, %lo(D_800981B4)
/* 7A20 8002C620 0C00B082 */ jal crash_printf_string
/* 7A24 8002C624 2405008C */ addiu $a1, $zero, 0x8c
/* 7A28 8002C628 8E24012C */ lw $a0, 0x12c($s1)
/* 7A2C 8002C62C 0C00B0C9 */ jal func_8002C324
/* 7A30 8002C630 00000000 */ nop
/* 7A34 8002C634 2404001E */ addiu $a0, $zero, 0x1e
/* 7A38 8002C638 240500AA */ addiu $a1, $zero, 0xaa
/* 7A3C 8002C63C 0000302D */ daddu $a2, $zero, $zero
/* 7A40 8002C640 0C00B0AE */ jal crash_print_fpr
/* 7A44 8002C644 26270134 */ addiu $a3, $s1, 0x134
/* 7A48 8002C648 24040078 */ addiu $a0, $zero, 0x78
/* 7A4C 8002C64C 240500AA */ addiu $a1, $zero, 0xaa
/* 7A50 8002C650 24060002 */ addiu $a2, $zero, 2
/* 7A54 8002C654 0C00B0AE */ jal crash_print_fpr
/* 7A58 8002C658 2627013C */ addiu $a3, $s1, 0x13c
/* 7A5C 8002C65C 240400D2 */ addiu $a0, $zero, 0xd2
/* 7A60 8002C660 240500AA */ addiu $a1, $zero, 0xaa
/* 7A64 8002C664 24060004 */ addiu $a2, $zero, 4
/* 7A68 8002C668 0C00B0AE */ jal crash_print_fpr
/* 7A6C 8002C66C 26270144 */ addiu $a3, $s1, 0x144
/* 7A70 8002C670 2404001E */ addiu $a0, $zero, 0x1e
/* 7A74 8002C674 240500B4 */ addiu $a1, $zero, 0xb4
/* 7A78 8002C678 24060006 */ addiu $a2, $zero, 6
/* 7A7C 8002C67C 0C00B0AE */ jal crash_print_fpr
/* 7A80 8002C680 2627014C */ addiu $a3, $s1, 0x14c
/* 7A84 8002C684 24040078 */ addiu $a0, $zero, 0x78
/* 7A88 8002C688 240500B4 */ addiu $a1, $zero, 0xb4
/* 7A8C 8002C68C 24060008 */ addiu $a2, $zero, 8
/* 7A90 8002C690 0C00B0AE */ jal crash_print_fpr
/* 7A94 8002C694 26270154 */ addiu $a3, $s1, 0x154
/* 7A98 8002C698 240400D2 */ addiu $a0, $zero, 0xd2
/* 7A9C 8002C69C 240500B4 */ addiu $a1, $zero, 0xb4
/* 7AA0 8002C6A0 2406000A */ addiu $a2, $zero, 0xa
/* 7AA4 8002C6A4 0C00B0AE */ jal crash_print_fpr
/* 7AA8 8002C6A8 2627015C */ addiu $a3, $s1, 0x15c
/* 7AAC 8002C6AC 2404001E */ addiu $a0, $zero, 0x1e
/* 7AB0 8002C6B0 240500BE */ addiu $a1, $zero, 0xbe
/* 7AB4 8002C6B4 2406000C */ addiu $a2, $zero, 0xc
/* 7AB8 8002C6B8 0C00B0AE */ jal crash_print_fpr
/* 7ABC 8002C6BC 26270164 */ addiu $a3, $s1, 0x164
/* 7AC0 8002C6C0 24040078 */ addiu $a0, $zero, 0x78
/* 7AC4 8002C6C4 240500BE */ addiu $a1, $zero, 0xbe
/* 7AC8 8002C6C8 2406000E */ addiu $a2, $zero, 0xe
/* 7ACC 8002C6CC 0C00B0AE */ jal crash_print_fpr
/* 7AD0 8002C6D0 2627016C */ addiu $a3, $s1, 0x16c
/* 7AD4 8002C6D4 240400D2 */ addiu $a0, $zero, 0xd2
/* 7AD8 8002C6D8 240500BE */ addiu $a1, $zero, 0xbe
/* 7ADC 8002C6DC 24060010 */ addiu $a2, $zero, 0x10
/* 7AE0 8002C6E0 0C00B0AE */ jal crash_print_fpr
/* 7AE4 8002C6E4 26270174 */ addiu $a3, $s1, 0x174
/* 7AE8 8002C6E8 2404001E */ addiu $a0, $zero, 0x1e
/* 7AEC 8002C6EC 240500C8 */ addiu $a1, $zero, 0xc8
/* 7AF0 8002C6F0 24060012 */ addiu $a2, $zero, 0x12
/* 7AF4 8002C6F4 0C00B0AE */ jal crash_print_fpr
/* 7AF8 8002C6F8 2627017C */ addiu $a3, $s1, 0x17c
/* 7AFC 8002C6FC 24040078 */ addiu $a0, $zero, 0x78
/* 7B00 8002C700 240500C8 */ addiu $a1, $zero, 0xc8
/* 7B04 8002C704 24060014 */ addiu $a2, $zero, 0x14
/* 7B08 8002C708 0C00B0AE */ jal crash_print_fpr
/* 7B0C 8002C70C 26270184 */ addiu $a3, $s1, 0x184
/* 7B10 8002C710 240400D2 */ addiu $a0, $zero, 0xd2
/* 7B14 8002C714 240500C8 */ addiu $a1, $zero, 0xc8
/* 7B18 8002C718 24060016 */ addiu $a2, $zero, 0x16
/* 7B1C 8002C71C 0C00B0AE */ jal crash_print_fpr
/* 7B20 8002C720 2627018C */ addiu $a3, $s1, 0x18c
/* 7B24 8002C724 2404001E */ addiu $a0, $zero, 0x1e
/* 7B28 8002C728 240500D2 */ addiu $a1, $zero, 0xd2
/* 7B2C 8002C72C 24060018 */ addiu $a2, $zero, 0x18
/* 7B30 8002C730 0C00B0AE */ jal crash_print_fpr
/* 7B34 8002C734 26270194 */ addiu $a3, $s1, 0x194
/* 7B38 8002C738 24040078 */ addiu $a0, $zero, 0x78
/* 7B3C 8002C73C 240500D2 */ addiu $a1, $zero, 0xd2
/* 7B40 8002C740 2406001A */ addiu $a2, $zero, 0x1a
/* 7B44 8002C744 0C00B0AE */ jal crash_print_fpr
/* 7B48 8002C748 2627019C */ addiu $a3, $s1, 0x19c
/* 7B4C 8002C74C 240400D2 */ addiu $a0, $zero, 0xd2
/* 7B50 8002C750 0080282D */ daddu $a1, $a0, $zero
/* 7B54 8002C754 2406001C */ addiu $a2, $zero, 0x1c
/* 7B58 8002C758 0C00B0AE */ jal crash_print_fpr
/* 7B5C 8002C75C 262701A4 */ addiu $a3, $s1, 0x1a4
/* 7B60 8002C760 2404001E */ addiu $a0, $zero, 0x1e
/* 7B64 8002C764 240500DC */ addiu $a1, $zero, 0xdc
/* 7B68 8002C768 0080302D */ daddu $a2, $a0, $zero
/* 7B6C 8002C76C 0C00B0AE */ jal crash_print_fpr
/* 7B70 8002C770 262701AC */ addiu $a3, $s1, 0x1ac
/* 7B74 8002C774 0C00AFD0 */ jal crash_delay_msec
/* 7B78 8002C778 240401F4 */ addiu $a0, $zero, 0x1f4
/* 7B7C 8002C77C 240400D2 */ addiu $a0, $zero, 0xd2
/* 7B80 8002C780 8E4200FC */ lw $v0, 0xfc($s2)
/* 7B84 8002C784 8C470000 */ lw $a3, ($v0)
/* 7B88 8002C788 3C06800A */ lui $a2, %hi(D_800981C8)
/* 7B8C 8002C78C 24C681C8 */ addiu $a2, $a2, %lo(D_800981C8)
/* 7B90 8002C790 0C00B082 */ jal crash_printf_string
/* 7B94 8002C794 2405008C */ addiu $a1, $zero, 0x8c
/* 7B98 8002C798 8FBF0024 */ lw $ra, 0x24($sp)
/* 7B9C 8002C79C 8FB20020 */ lw $s2, 0x20($sp)
/* 7BA0 8002C7A0 8FB1001C */ lw $s1, 0x1c($sp)
/* 7BA4 8002C7A4 8FB00018 */ lw $s0, 0x18($sp)
/* 7BA8 8002C7A8 03E00008 */ jr $ra
/* 7BAC 8002C7AC 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,50 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8002BFB0
/* 73B0 8002BFB0 3C08800A */ lui $t0, %hi(D_8009BB30)
/* 73B4 8002BFB4 2508BB30 */ addiu $t0, $t0, %lo(D_8009BB30)
/* 73B8 8002BFB8 950309D0 */ lhu $v1, 0x9d0($t0)
/* 73BC 8002BFBC 24020280 */ addiu $v0, $zero, 0x280
/* 73C0 8002BFC0 14620005 */ bne $v1, $v0, .L8002BFD8
/* 73C4 8002BFC4 00000000 */ nop
/* 73C8 8002BFC8 00042040 */ sll $a0, $a0, 1
/* 73CC 8002BFCC 00052840 */ sll $a1, $a1, 1
/* 73D0 8002BFD0 00063040 */ sll $a2, $a2, 1
/* 73D4 8002BFD4 00073840 */ sll $a3, $a3, 1
.L8002BFD8:
/* 73D8 8002BFD8 950209D0 */ lhu $v0, 0x9d0($t0)
/* 73DC 8002BFDC 00450018 */ mult $v0, $a1
/* 73E0 8002BFE0 0000282D */ daddu $a1, $zero, $zero
/* 73E4 8002BFE4 8D0209CC */ lw $v0, 0x9cc($t0)
/* 73E8 8002BFE8 00004812 */ mflo $t1
/* 73EC 8002BFEC 00091840 */ sll $v1, $t1, 1
/* 73F0 8002BFF0 00431021 */ addu $v0, $v0, $v1
/* 73F4 8002BFF4 00041840 */ sll $v1, $a0, 1
/* 73F8 8002BFF8 18E00014 */ blez $a3, .L8002C04C
/* 73FC 8002BFFC 00432021 */ addu $a0, $v0, $v1
.L8002C000:
/* 7400 8002C000 18C0000A */ blez $a2, .L8002C02C
/* 7404 8002C004 0000182D */ daddu $v1, $zero, $zero
.L8002C008:
/* 7408 8002C008 94820000 */ lhu $v0, ($a0)
/* 740C 8002C00C 24630001 */ addiu $v1, $v1, 1
/* 7410 8002C010 3042E738 */ andi $v0, $v0, 0xe738
/* 7414 8002C014 00021082 */ srl $v0, $v0, 2
/* 7418 8002C018 34420001 */ ori $v0, $v0, 1
/* 741C 8002C01C A4820000 */ sh $v0, ($a0)
/* 7420 8002C020 0066102A */ slt $v0, $v1, $a2
/* 7424 8002C024 1440FFF8 */ bnez $v0, .L8002C008
/* 7428 8002C028 24840002 */ addiu $a0, $a0, 2
.L8002C02C:
/* 742C 8002C02C 950209D0 */ lhu $v0, 0x9d0($t0)
/* 7430 8002C030 24A50001 */ addiu $a1, $a1, 1
/* 7434 8002C034 00461023 */ subu $v0, $v0, $a2
/* 7438 8002C038 00021040 */ sll $v0, $v0, 1
/* 743C 8002C03C 00822021 */ addu $a0, $a0, $v0
/* 7440 8002C040 00A7102A */ slt $v0, $a1, $a3
/* 7444 8002C044 1440FFEE */ bnez $v0, .L8002C000
/* 7448 8002C048 00000000 */ nop
.L8002C04C:
/* 744C 8002C04C 03E00008 */ jr $ra
/* 7450 8002C050 00000000 */ nop

View File

@ -1,108 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8002C054
/* 7454 8002C054 3C026666 */ lui $v0, 0x6666
/* 7458 8002C058 34426667 */ ori $v0, $v0, 0x6667
/* 745C 8002C05C 00C20018 */ mult $a2, $v0
/* 7460 8002C060 0080382D */ daddu $a3, $a0, $zero
/* 7464 8002C064 000617C3 */ sra $v0, $a2, 0x1f
/* 7468 8002C068 3C048007 */ lui $a0, %hi(D_80077290)
/* 746C 8002C06C 24847290 */ addiu $a0, $a0, %lo(D_80077290)
/* 7470 8002C070 00007010 */ mfhi $t6
/* 7474 8002C074 000E1843 */ sra $v1, $t6, 1
/* 7478 8002C078 00621823 */ subu $v1, $v1, $v0
/* 747C 8002C07C 000310C0 */ sll $v0, $v1, 3
/* 7480 8002C080 00431023 */ subu $v0, $v0, $v1
/* 7484 8002C084 00021080 */ sll $v0, $v0, 2
/* 7488 8002C088 00445021 */ addu $t2, $v0, $a0
/* 748C 8002C08C 00031080 */ sll $v0, $v1, 2
/* 7490 8002C090 00431021 */ addu $v0, $v0, $v1
/* 7494 8002C094 00C23023 */ subu $a2, $a2, $v0
/* 7498 8002C098 00061040 */ sll $v0, $a2, 1
/* 749C 8002C09C 00461021 */ addu $v0, $v0, $a2
/* 74A0 8002C0A0 00026040 */ sll $t4, $v0, 1
/* 74A4 8002C0A4 3C04800A */ lui $a0, %hi(D_8009BB30)
/* 74A8 8002C0A8 2484BB30 */ addiu $a0, $a0, %lo(D_8009BB30)
/* 74AC 8002C0AC 948309D0 */ lhu $v1, 0x9d0($a0)
/* 74B0 8002C0B0 24020140 */ addiu $v0, $zero, 0x140
/* 74B4 8002C0B4 14620024 */ bne $v1, $v0, .L8002C148
/* 74B8 8002C0B8 24020280 */ addiu $v0, $zero, 0x280
/* 74BC 8002C0BC 0060102D */ daddu $v0, $v1, $zero
/* 74C0 8002C0C0 00450018 */ mult $v0, $a1
/* 74C4 8002C0C4 0000482D */ daddu $t1, $zero, $zero
/* 74C8 8002C0C8 3C0D8000 */ lui $t5, 0x8000
/* 74CC 8002C0CC 0080582D */ daddu $t3, $a0, $zero
/* 74D0 8002C0D0 8D6209CC */ lw $v0, 0x9cc($t3)
/* 74D4 8002C0D4 00007012 */ mflo $t6
/* 74D8 8002C0D8 000E1840 */ sll $v1, $t6, 1
/* 74DC 8002C0DC 00431021 */ addu $v0, $v0, $v1
/* 74E0 8002C0E0 00071840 */ sll $v1, $a3, 1
/* 74E4 8002C0E4 00432821 */ addu $a1, $v0, $v1
/* 74E8 8002C0E8 018D2006 */ srlv $a0, $t5, $t4
.L8002C0EC:
/* 74EC 8002C0EC 8D480000 */ lw $t0, ($t2)
/* 74F0 8002C0F0 254A0004 */ addiu $t2, $t2, 4
/* 74F4 8002C0F4 24060005 */ addiu $a2, $zero, 5
.L8002C0F8:
/* 74F8 8002C0F8 00A0382D */ daddu $a3, $a1, $zero
/* 74FC 8002C0FC 24A50002 */ addiu $a1, $a1, 2
/* 7500 8002C100 00881024 */ and $v0, $a0, $t0
/* 7504 8002C104 10400002 */ beqz $v0, .L8002C110
/* 7508 8002C108 24030001 */ addiu $v1, $zero, 1
/* 750C 8002C10C 3403FFFF */ ori $v1, $zero, 0xffff
.L8002C110:
/* 7510 8002C110 A4E30000 */ sh $v1, ($a3)
/* 7514 8002C114 24C6FFFF */ addiu $a2, $a2, -1
/* 7518 8002C118 04C1FFF7 */ bgez $a2, .L8002C0F8
/* 751C 8002C11C 00042042 */ srl $a0, $a0, 1
/* 7520 8002C120 956209D0 */ lhu $v0, 0x9d0($t3)
/* 7524 8002C124 25290001 */ addiu $t1, $t1, 1
/* 7528 8002C128 00021040 */ sll $v0, $v0, 1
/* 752C 8002C12C 2442FFF4 */ addiu $v0, $v0, -0xc
/* 7530 8002C130 00A22821 */ addu $a1, $a1, $v0
/* 7534 8002C134 29220007 */ slti $v0, $t1, 7
/* 7538 8002C138 1440FFEC */ bnez $v0, .L8002C0EC
/* 753C 8002C13C 018D2006 */ srlv $a0, $t5, $t4
.L8002C140:
/* 7540 8002C140 03E00008 */ jr $ra
/* 7544 8002C144 00000000 */ nop
.L8002C148:
/* 7548 8002C148 1462FFFD */ bne $v1, $v0, .L8002C140
/* 754C 8002C14C 0000482D */ daddu $t1, $zero, $zero
/* 7550 8002C150 3C0B8000 */ lui $t3, 0x8000
/* 7554 8002C154 00051080 */ sll $v0, $a1, 2
/* 7558 8002C158 00451021 */ addu $v0, $v0, $a1
/* 755C 8002C15C 8C8309CC */ lw $v1, 0x9cc($a0)
/* 7560 8002C160 00021240 */ sll $v0, $v0, 9
/* 7564 8002C164 00621821 */ addu $v1, $v1, $v0
/* 7568 8002C168 00071080 */ sll $v0, $a3, 2
/* 756C 8002C16C 00621821 */ addu $v1, $v1, $v0
.L8002C170:
/* 7570 8002C170 018B3806 */ srlv $a3, $t3, $t4
/* 7574 8002C174 8D480000 */ lw $t0, ($t2)
/* 7578 8002C178 254A0004 */ addiu $t2, $t2, 4
/* 757C 8002C17C 0000302D */ daddu $a2, $zero, $zero
/* 7580 8002C180 24650502 */ addiu $a1, $v1, 0x502
.L8002C184:
/* 7584 8002C184 00E81024 */ and $v0, $a3, $t0
/* 7588 8002C188 10400002 */ beqz $v0, .L8002C194
/* 758C 8002C18C 24040001 */ addiu $a0, $zero, 1
/* 7590 8002C190 3404FFFF */ ori $a0, $zero, 0xffff
.L8002C194:
/* 7594 8002C194 A4640000 */ sh $a0, ($v1)
/* 7598 8002C198 A4A4FB00 */ sh $a0, -0x500($a1)
/* 759C 8002C19C A4A4FFFE */ sh $a0, -2($a1)
/* 75A0 8002C1A0 A4A40000 */ sh $a0, ($a1)
/* 75A4 8002C1A4 24A50004 */ addiu $a1, $a1, 4
/* 75A8 8002C1A8 24630004 */ addiu $v1, $v1, 4
/* 75AC 8002C1AC 24C60001 */ addiu $a2, $a2, 1
/* 75B0 8002C1B0 28C20006 */ slti $v0, $a2, 6
/* 75B4 8002C1B4 1440FFF3 */ bnez $v0, .L8002C184
/* 75B8 8002C1B8 00073842 */ srl $a3, $a3, 1
/* 75BC 8002C1BC 25290001 */ addiu $t1, $t1, 1
/* 75C0 8002C1C0 29220007 */ slti $v0, $t1, 7
/* 75C4 8002C1C4 1440FFEA */ bnez $v0, .L8002C170
/* 75C8 8002C1C8 246309E8 */ addiu $v1, $v1, 0x9e8
/* 75CC 8002C1CC 03E00008 */ jr $ra
/* 75D0 8002C1D0 00000000 */ nop

View File

@ -1,17 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8002C1D4
/* 75D4 8002C1D4 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 75D8 8002C1D8 AFB10014 */ sw $s1, 0x14($sp)
/* 75DC 8002C1DC 0080882D */ daddu $s1, $a0, $zero
/* 75E0 8002C1E0 AFB00010 */ sw $s0, 0x10($sp)
/* 75E4 8002C1E4 AFBF0018 */ sw $ra, 0x18($sp)
/* 75E8 8002C1E8 0C01929D */ jal memcpy
/* 75EC 8002C1EC 00C0802D */ daddu $s0, $a2, $zero
/* 75F0 8002C1F0 02301021 */ addu $v0, $s1, $s0
/* 75F4 8002C1F4 8FBF0018 */ lw $ra, 0x18($sp)
/* 75F8 8002C1F8 8FB10014 */ lw $s1, 0x14($sp)
/* 75FC 8002C1FC 8FB00010 */ lw $s0, 0x10($sp)
/* 7600 8002C200 03E00008 */ jr $ra
/* 7604 8002C204 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,52 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_80098050
.ascii "FPCSR:%08XH\0"
glabel D_8009805C
.ascii "(%s)\0\0\0\0"
.section .text
glabel func_8002C324
/* 7724 8002C324 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 7728 8002C328 AFB10014 */ sw $s1, 0x14($sp)
/* 772C 8002C32C 0080882D */ daddu $s1, $a0, $zero
/* 7730 8002C330 AFB00010 */ sw $s0, 0x10($sp)
/* 7734 8002C334 3C100002 */ lui $s0, 2
/* 7738 8002C338 2404001E */ addiu $a0, $zero, 0x1e
/* 773C 8002C33C 2405009B */ addiu $a1, $zero, 0x9b
/* 7740 8002C340 3C06800A */ lui $a2, %hi(D_80098050)
/* 7744 8002C344 24C68050 */ addiu $a2, $a2, %lo(D_80098050)
/* 7748 8002C348 AFBF0018 */ sw $ra, 0x18($sp)
/* 774C 8002C34C 0C00B082 */ jal crash_printf_string
/* 7750 8002C350 0220382D */ daddu $a3, $s1, $zero
/* 7754 8002C354 0000182D */ daddu $v1, $zero, $zero
/* 7758 8002C358 3C078007 */ lui $a3, %hi(D_800773D8)
/* 775C 8002C35C 24E773D8 */ addiu $a3, $a3, %lo(D_800773D8)
.L8002C360:
/* 7760 8002C360 02301024 */ and $v0, $s1, $s0
/* 7764 8002C364 50400009 */ beql $v0, $zero, .L8002C38C
/* 7768 8002C368 24E70004 */ addiu $a3, $a3, 4
/* 776C 8002C36C 24040084 */ addiu $a0, $zero, 0x84
/* 7770 8002C370 8CE70000 */ lw $a3, ($a3)
/* 7774 8002C374 3C06800A */ lui $a2, %hi(D_8009805C)
/* 7778 8002C378 24C6805C */ addiu $a2, $a2, %lo(D_8009805C)
/* 777C 8002C37C 0C00B082 */ jal crash_printf_string
/* 7780 8002C380 2405009B */ addiu $a1, $zero, 0x9b
/* 7784 8002C384 0800B0E7 */ j .L8002C39C
/* 7788 8002C388 00000000 */ nop
.L8002C38C:
/* 778C 8002C38C 24630001 */ addiu $v1, $v1, 1
/* 7790 8002C390 28620006 */ slti $v0, $v1, 6
/* 7794 8002C394 1440FFF2 */ bnez $v0, .L8002C360
/* 7798 8002C398 00108042 */ srl $s0, $s0, 1
.L8002C39C:
/* 779C 8002C39C 8FBF0018 */ lw $ra, 0x18($sp)
/* 77A0 8002C3A0 8FB10014 */ lw $s1, 0x14($sp)
/* 77A4 8002C3A4 8FB00010 */ lw $s0, 0x10($sp)
/* 77A8 8002C3A8 03E00008 */ jr $ra
/* 77AC 8002C3AC 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,34 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8002C7B0
/* 7BB0 8002C7B0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 7BB4 8002C7B4 AFBF0010 */ sw $ra, 0x10($sp)
/* 7BB8 8002C7B8 0C0198A4 */ jal osGetActiveQueue
/* 7BBC 8002C7BC 00000000 */ nop
/* 7BC0 8002C7C0 0040202D */ daddu $a0, $v0, $zero
/* 7BC4 8002C7C4 8C830004 */ lw $v1, 4($a0)
/* 7BC8 8002C7C8 2402FFFF */ addiu $v0, $zero, -1
/* 7BCC 8002C7CC 50620010 */ beql $v1, $v0, .L8002C810
/* 7BD0 8002C7D0 0000102D */ daddu $v0, $zero, $zero
/* 7BD4 8002C7D4 0040182D */ daddu $v1, $v0, $zero
/* 7BD8 8002C7D8 8C820004 */ lw $v0, 4($a0)
/* 7BDC 8002C7DC 2442FFFF */ addiu $v0, $v0, -1
.L8002C7E0:
/* 7BE0 8002C7E0 2C42007E */ sltiu $v0, $v0, 0x7e
/* 7BE4 8002C7E4 10400005 */ beqz $v0, .L8002C7FC
/* 7BE8 8002C7E8 00000000 */ nop
/* 7BEC 8002C7EC 94820012 */ lhu $v0, 0x12($a0)
/* 7BF0 8002C7F0 30420003 */ andi $v0, $v0, 3
/* 7BF4 8002C7F4 14400006 */ bnez $v0, .L8002C810
/* 7BF8 8002C7F8 0080102D */ daddu $v0, $a0, $zero
.L8002C7FC:
/* 7BFC 8002C7FC 8C84000C */ lw $a0, 0xc($a0)
/* 7C00 8002C800 8C820004 */ lw $v0, 4($a0)
/* 7C04 8002C804 1443FFF6 */ bne $v0, $v1, .L8002C7E0
/* 7C08 8002C808 2442FFFF */ addiu $v0, $v0, -1
/* 7C0C 8002C80C 0000102D */ daddu $v0, $zero, $zero
.L8002C810:
/* 7C10 8002C810 8FBF0010 */ lw $ra, 0x10($sp)
/* 7C14 8002C814 03E00008 */ jr $ra
/* 7C18 8002C818 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,68 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8002C94C
/* 7D4C 8002C94C AFA60008 */ sw $a2, 8($sp)
/* 7D50 8002C950 AFA7000C */ sw $a3, 0xc($sp)
/* 7D54 8002C954 27BDFED0 */ addiu $sp, $sp, -0x130
/* 7D58 8002C958 AFB20118 */ sw $s2, 0x118($sp)
/* 7D5C 8002C95C 0080902D */ daddu $s2, $a0, $zero
/* 7D60 8002C960 AFB00110 */ sw $s0, 0x110($sp)
/* 7D64 8002C964 00A0802D */ daddu $s0, $a1, $zero
/* 7D68 8002C968 AFB3011C */ sw $s3, 0x11c($sp)
/* 7D6C 8002C96C 0240982D */ daddu $s3, $s2, $zero
/* 7D70 8002C970 3C048003 */ lui $a0, %hi(func_8002C1D4)
/* 7D74 8002C974 2484C1D4 */ addiu $a0, $a0, %lo(func_8002C1D4)
/* 7D78 8002C978 27A50010 */ addiu $a1, $sp, 0x10
/* 7D7C 8002C97C 27A7013C */ addiu $a3, $sp, 0x13c
/* 7D80 8002C980 AFBF0128 */ sw $ra, 0x128($sp)
/* 7D84 8002C984 AFB50124 */ sw $s5, 0x124($sp)
/* 7D88 8002C988 AFB40120 */ sw $s4, 0x120($sp)
/* 7D8C 8002C98C 0C0192A8 */ jal _Printf
/* 7D90 8002C990 AFB10114 */ sw $s1, 0x114($sp)
/* 7D94 8002C994 0040882D */ daddu $s1, $v0, $zero
/* 7D98 8002C998 1A20001D */ blez $s1, .L8002CA10
/* 7D9C 8002C99C 00122400 */ sll $a0, $s2, 0x10
/* 7DA0 8002C9A0 00042403 */ sra $a0, $a0, 0x10
/* 7DA4 8002C9A4 2484FFFA */ addiu $a0, $a0, -6
/* 7DA8 8002C9A8 00108400 */ sll $s0, $s0, 0x10
/* 7DAC 8002C9AC 00102C03 */ sra $a1, $s0, 0x10
/* 7DB0 8002C9B0 24A5FFFA */ addiu $a1, $a1, -6
/* 7DB4 8002C9B4 26220002 */ addiu $v0, $s1, 2
/* 7DB8 8002C9B8 00023040 */ sll $a2, $v0, 1
/* 7DBC 8002C9BC 00C23021 */ addu $a2, $a2, $v0
/* 7DC0 8002C9C0 00063040 */ sll $a2, $a2, 1
/* 7DC4 8002C9C4 0C00AFEC */ jal func_8002BFB0
/* 7DC8 8002C9C8 24070013 */ addiu $a3, $zero, 0x13
/* 7DCC 8002C9CC 27B20010 */ addiu $s2, $sp, 0x10
/* 7DD0 8002C9D0 3C158007 */ lui $s5, %hi(D_80077210)
/* 7DD4 8002C9D4 26B57210 */ addiu $s5, $s5, %lo(D_80077210)
/* 7DD8 8002C9D8 241400FF */ addiu $s4, $zero, 0xff
.L8002C9DC:
/* 7DDC 8002C9DC 92420000 */ lbu $v0, ($s2)
/* 7DE0 8002C9E0 3042007F */ andi $v0, $v0, 0x7f
/* 7DE4 8002C9E4 00551021 */ addu $v0, $v0, $s5
/* 7DE8 8002C9E8 90460000 */ lbu $a2, ($v0)
/* 7DEC 8002C9EC 10D40004 */ beq $a2, $s4, .L8002CA00
/* 7DF0 8002C9F0 00132400 */ sll $a0, $s3, 0x10
/* 7DF4 8002C9F4 00042403 */ sra $a0, $a0, 0x10
/* 7DF8 8002C9F8 0C00B015 */ jal func_8002C054
/* 7DFC 8002C9FC 00102C03 */ sra $a1, $s0, 0x10
.L8002CA00:
/* 7E00 8002CA00 26730006 */ addiu $s3, $s3, 6
/* 7E04 8002CA04 2631FFFF */ addiu $s1, $s1, -1
/* 7E08 8002CA08 1E20FFF4 */ bgtz $s1, .L8002C9DC
/* 7E0C 8002CA0C 26520001 */ addiu $s2, $s2, 1
.L8002CA10:
/* 7E10 8002CA10 8FBF0128 */ lw $ra, 0x128($sp)
/* 7E14 8002CA14 8FB50124 */ lw $s5, 0x124($sp)
/* 7E18 8002CA18 8FB40120 */ lw $s4, 0x120($sp)
/* 7E1C 8002CA1C 8FB3011C */ lw $s3, 0x11c($sp)
/* 7E20 8002CA20 8FB20118 */ lw $s2, 0x118($sp)
/* 7E24 8002CA24 8FB10114 */ lw $s1, 0x114($sp)
/* 7E28 8002CA28 8FB00110 */ lw $s0, 0x110($sp)
/* 7E2C 8002CA2C 03E00008 */ jr $ra
/* 7E30 8002CA30 27BD0130 */ addiu $sp, $sp, 0x130
/* 7E34 8002CA34 00000000 */ nop
/* 7E38 8002CA38 00000000 */ nop
/* 7E3C 8002CA3C 00000000 */ nop

View File

@ -51,7 +51,7 @@ segments:
- [0x6000, c, heap]
- [0x6240, c, fio]
- [0x6E40, c, curtains]
- [0x7340, c, crash]
- [0x7340, c, crash_screen]
- [0x7E40, c, os/nusys/nuGfxTaskMgr, -fforce-addr]
- [0x8230, c, os/nusys/nuSiMgr]
- [0x8560, c]
@ -281,7 +281,7 @@ segments:
- [0x51260]
- [0x51540, ia8, ui/no_controller, 128, 32]
- [0x52540]
- [0x52610, .data, crash]
- [0x52610, .data, crash_screen]
- [0x527F0, .data, os/nusys/nuGfxTaskMgr]
- [0x52800, .data, os/nusys/nuSiMgr]
- [0x52810, .data, camera]
@ -324,7 +324,7 @@ segments:
- [0x73148, .rodata, main_loop]
- [0x73160, .rodata, 43F0]
- [0x73200, .rodata, curtains]
- [0x73230, .rodata, crash]
- [0x73230, .rodata, crash_screen]
- [0x735E0, .rodata, 8800]
- [0x73610, .rodata, B0E0]
- [0x73680, .rodata, camera]

View File

@ -107,19 +107,19 @@ set_curtain_scale = 0x8002BEEC; // type:func rom:0x72EC
set_curtain_draw_callback = 0x8002BF04; // type:func rom:0x7304
set_curtain_fade_goal = 0x8002BF14; // type:func rom:0x7314
set_curtain_fade = 0x8002BF24; // type:func rom:0x7324
crash_delay_msec = 0x8002BF40; // type:func rom:0x7340
func_8002BFB0 = 0x8002BFB0; // type:func rom:0x73B0
func_8002C054 = 0x8002C054; // type:func rom:0x7454
func_8002C1D4 = 0x8002C1D4; // type:func rom:0x75D4
crash_printf_string = 0x8002C208; // type:func rom:0x7608
crash_print_fpr = 0x8002C2B8; // type:func rom:0x76B8
func_8002C324 = 0x8002C324; // type:func rom:0x7724
crash_show_handler = 0x8002C3B0; // type:func rom:0x77B0
func_8002C7B0 = 0x8002C7B0; // type:func rom:0x7BB0
crash_monitor_thread = 0x8002C81C; // type:func rom:0x7C1C
func_8002C890 = 0x8002C890; // type:func rom:0x7C90
crash_create_monitor = 0x8002C8B0; // type:func rom:0x7CB0
func_8002C94C = 0x8002C94C; // type:func rom:0x7D4C
crash_screen_sleep = 0x8002BF40; // type:func rom:0x7340
crash_screen_draw_rect = 0x8002BFB0; // type:func rom:0x73B0
crash_screen_draw_glyph = 0x8002C054; // type:func rom:0x7454
crash_screen_copy_to_buf = 0x8002C1D4; // type:func rom:0x75D4
crash_screen_printf = 0x8002C208; // type:func rom:0x7608
crash_screen_print_fpr = 0x8002C2B8; // type:func rom:0x76B8
crash_screen_print_fpcsr = 0x8002C324; // type:func rom:0x7724
crash_screen_draw = 0x8002C3B0; // type:func rom:0x77B0
crash_screen_get_faulted_thread = 0x8002C7B0; // type:func rom:0x7BB0
crash_screen_thread_entry = 0x8002C81C; // type:func rom:0x7C1C
crash_screen_set_draw_info = 0x8002C890; // type:func rom:0x7C90
crash_screen_init = 0x8002C8B0; // type:func rom:0x7CB0
crash_screen_printf_with_bg = 0x8002C94C; // type:func rom:0x7D4C
nuGfxTaskMgr = 0x8002CA40; // type:func rom:0x7E40
nuGfxTaskMgrInit = 0x8002CB38; // type:func rom:0x7F38
nuGfxTaskStart = 0x8002CCC4; // type:func rom:0x80C4
@ -1338,8 +1338,8 @@ D_80077140 = 0x80077140; // type:data rom:0x52540
D_800771E8 = 0x800771E8; // type:data rom:0x525E8
D_80077210 = 0x80077210; // type:data rom:0x52610
D_80077290 = 0x80077290; // type:data rom:0x52690
D_80077390 = 0x80077390; // type:data rom:0x52790
D_800773D8 = 0x800773D8; // type:data rom:0x527D8
gFaultCauses = 0x80077390; // type:data rom:0x52790
gFPCSRFaultCauses = 0x800773D8; // type:data rom:0x527D8
nuGfxCfbNum = 0x800773F0; // type:data rom:0x527F0
nuGfxSwapCfbFunc = 0x800773F4; // type:data rom:0x527F4
nuGfxTaskEndFunc = 0x800773F8; // type:data rom:0x527F8
@ -18170,7 +18170,7 @@ D_80000000 = 0x80000000; // type:data
osTvType = 0x80000300; //
D_80000308 = 0x80000308; // type:data
D_8000030C = 0x8000030C; // type:data
D_80000318 = 0x80000318; // type:data
osMemSize = 0x80000318; // type:data
D_8000031C = 0x8000031C; // type:data
D_80026AC7 = 0x80026AC7; // type:data
dead_atan2 = 0x8002AF70; // type:data

View File

@ -60,7 +60,7 @@ D_80000000 = 0x80000000;
osTvType = 0x80000300;
D_80000308 = 0x80000308;
D_8000030C = 0x8000030C;
D_80000318 = 0x80000318;
osMemSize = 0x80000318;
D_8000031C = 0x8000031C;
D_80026AC7 = 0x80026AC7;
D_8004AA85 = 0x8004AA85;
@ -1341,9 +1341,7 @@ gCurtainFade = 0x8009BA98;
gCurtainFadeGoal = 0x8009BA9C;
gCurtainDrawCallback = 0x8009BAA0;
D_8009BAA8 = 0x8009BAA8;
D_8009BB30 = 0x8009BB30;
D_8009C4E0 = 0x8009C4E0;
D_8009C4FC = 0x8009C4FC;
gCrashScreen = 0x8009BB30;
nuGfxTask_ptr = 0x8009C510;
taskDoneMsg = 0x8009C514;
swapBufMsg = 0x8009C516;