mirror of
https://github.com/pmret/papermario.git
synced 2024-11-08 12:02:30 +01:00
crash_screen OK (#449)
* crash screen done * cleanup * done i think * crash -> crash_screen * fix warnings * size comment * review
This commit is contained in:
parent
f297fff724
commit
5779f5de0e
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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[];
|
||||
|
||||
|
@ -30,7 +30,7 @@ void boot_main(void) {
|
||||
}
|
||||
|
||||
nuGfxDisplayOff();
|
||||
crash_create_monitor();
|
||||
crash_screen_init();
|
||||
is_debug_init();
|
||||
nuGfxInit();
|
||||
gGameStatusPtr->contBitPattern = nuContInit();
|
||||
|
86
src/crash.c
86
src/crash.c
@ -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
357
src/crash_screen.c
Normal 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);
|
||||
}
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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++);
|
||||
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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]
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user