#include #include "constants.h" #include "bss.h" #include "lib/lib_13790.h" #include "data.h" #include "types.h" #define NUM_COLS 80 #define NUM_ROWS 35 struct dhudchar { char c; u8 paletteindex; }; #if VERSION < VERSION_NTSC_1_0 struct dhudchar g_DHudCharBuffer[NUM_COLS][NUM_ROWS]; Gfx g_DHudFgGbi[32]; Gfx g_DHudBgGbi[32]; u32 var800606e0nb[] = { 0xb8000000, 0x00000000, 0x00000000, 0x00227a00, 0x007a348b, 0x00223434, 0x00115811, 0x00696900, 0x00000000, 0x00009c00, 0x00004600, 0x00460000, 0x00004600, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000046, 0x00229c11, 0x00346900, 0x00229c11, 0x00699c11, 0x00005834, 0x00adad34, 0x00118b34, 0x009cad7a, 0x00229c11, 0x00229c11, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00113411, 0x00000000, 0x0046ce00, 0x00ad58de, 0x00466969, 0x009c9c69, 0x008b8b00, 0x00469c00, 0x0022ce00, 0x00583400, 0x00345800, 0x007ace69, 0x00005800, 0x00000000, 0x00000000, 0x00000000, 0x00003446, 0x008b007a, 0x00588b00, 0x008b008b, 0x0022007a, 0x00119c69, 0x008b0000, 0x009c1100, 0x0022008b, 0x008b007a, 0x008b007a, 0x00000000, 0x00000000, 0x00225869, 0x00000000, 0x69582200, 0x009c698b, 0x00000000, 0x0046ce00, 0x00222258, 0x00deef7a, 0x00ad1111, 0x0069ef9c, 0x008b0000, 0x00460000, 0x008b0000, 0x00008b00, 0x0058ce34, 0x00008b00, 0x00000000, 0x00000000, 0x00000000, 0x00008b00, 0x008b008b, 0x00008b00, 0x0011007a, 0x00118b46, 0x0058467a, 0x00cead22, 0x009c8b00, 0x0000117a, 0x00698b46, 0x008b00ad, 0x0034ad00, 0x0034ad00, 0x228b4600, 0x8b8b8b8b, 0x00468b22, 0x0011008b, 0x00000000, 0x00007a00, 0x00000000, 0x009c9c00, 0x00118b34, 0x22adbd46, 0x008b8b34, 0x00000000, 0x008b0000, 0x00008b00, 0x007a2269, 0x22adef9c, 0x00000000, 0x22adadad, 0x00000000, 0x00226900, 0x008b008b, 0x00008b00, 0x00007a00, 0x0000117a, 0x009c347a, 0x0000008b, 0x00ce117a, 0x00002269, 0x008b227a, 0x00229c8b, 0x00001100, 0x00001100, 0xad580000, 0x34343434, 0x000058ad, 0x0000bd34, 0x00000000, 0x00112200, 0x00000000, 0x22dede22, 0x00ce5858, 0x0046468b, 0x008bad00, 0x00000000, 0x008b0000, 0x00008b00, 0x00000000, 0x00008b00, 0x00003400, 0x00000000, 0x00002200, 0x00691100, 0x008b008b, 0x00008b00, 0x00691158, 0x0011008b, 0x007a9cad, 0x1122008b, 0x008b008b, 0x00008b00, 0x008b008b, 0x0000227a, 0x00002200, 0x00002200, 0x228b4600, 0x8b8b8b8b, 0x00468b22, 0x00006900, 0x00000000, 0x00228b00, 0x00000000, 0x008b8b00, 0x0034bd00, 0x00119c46, 0x007a6969, 0x00000000, 0x00583400, 0x00345800, 0x00000000, 0x00005800, 0x0011ff00, 0x00000000, 0x00228b00, 0x008b0000, 0x00349c22, 0x008bce69, 0x22bdad8b, 0x007a9c11, 0x00008b8b, 0x118b9c11, 0x00349c22, 0x00005800, 0x00349c11, 0x00588b11, 0x00228b00, 0x0069ad00, 0x00225869, 0x00000000, 0x69582200, 0x0000bd00, 0x00000000, 0x00000000, 0x00000000, 0x00464600, 0x00004600, 0x00000000, 0x00000000, 0x00000000, 0x00004600, 0x00460000, 0x00000000, 0x00000000, 0x00583400, 0x00000000, 0x00000000, 0x58340000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008b0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00229c11, 0x00221100, 0x11223400, 0x00003411, 0x11342200, 0x00343422, 0x00343422, 0x00002222, 0x00220022, 0x00342222, 0x00003434, 0x00341122, 0x22341100, 0x11110022, 0x22221134, 0x00002200, 0x00343411, 0x00003400, 0x00343411, 0x00113411, 0x00343434, 0x11341134, 0x11220034, 0x34220034, 0x11340022, 0x11220034, 0x00223422, 0x00008b34, 0x00460000, 0x00587a00, 0x00005800, 0x00000000, 0x348b008b, 0x0069bd00, 0x11de7a58, 0x00ad69de, 0x22ce7a9c, 0x11ce7aad, 0x11ce7aad, 0x00ad7ade, 0x22ce00ce, 0x0069ce58, 0x00008bce, 0x22ce22ce, 0x46ce4600, 0x7abd00ff, 0x58ff46ce, 0x00ad7a9c, 0x11ce7a7a, 0x00ad7a8b, 0x22ce7a7a, 0x118b7abd, 0x469ccece, 0x8b8b34ce, 0x8b8b00bd, 0xbd8b22bd, 0x58ce00ce, 0x22bd00ce, 0x00bd7aad, 0x00008b00, 0x007a1100, 0x00008b00, 0x00694658, 0x00000000, 0x468b7abd, 0x00588b22, 0x008b008b, 0x46460011, 0x008b007a, 0x118b3458, 0x008b3458, 0x46460011, 0x008b008b, 0x00008b00, 0x0000117a, 0x008b7a11, 0x008b0000, 0x589c58bd, 0x11ad698b, 0x4646007a, 0x118b007a, 0x5846007a, 0x118b007a, 0x46580011, 0x34228b46, 0x6934008b, 0x007a008b, 0x58348b7a, 0x11696946, 0x00695846, 0x00113458, 0x00008b00, 0x00116900, 0x00008b00, 0x00110011, 0x00000000, 0x468b8b9c, 0x009c228b, 0x00dead7a, 0x58340000, 0x008b007a, 0x11dead00, 0x00dead00, 0x583400ad, 0x46deadbd, 0x00008b00, 0x3411117a, 0x00dead00, 0x008b0000, 0x5846ad7a, 0x118b8b8b, 0x5834007a, 0x11dead34, 0x5834007a, 0x11dede46, 0x0058ad34, 0x00008b00, 0x5834008b, 0x008b117a, 0x00bdde8b, 0x0022ad00, 0x0011bd00, 0x00226900, 0x00008b00, 0x00008b00, 0x00008b00, 0x00000000, 0x00000000, 0x348b348b, 0x469c8bad, 0x008b007a, 0x347a0058, 0x008b009c, 0x008b008b, 0x008b0000, 0x228b007a, 0x008b008b, 0x00008b00, 0x46462269, 0x008b117a, 0x008b007a, 0x6934347a, 0x118b34de, 0x118b009c, 0x008b0000, 0x228b009c, 0x008b117a, 0x3434008b, 0x00008b00, 0x4646008b, 0x0022ce00, 0x00adbd8b, 0x008b007a, 0x00008b00, 0x008b0058, 0x00008b00, 0x00003446, 0x00008b00, 0x00000000, 0x00000000, 0x00697a9c, 0x7a9c00bd, 0x69cead58, 0x0058ad58, 0x22bdad34, 0x22cead8b, 0x22bd2200, 0x0058ad58, 0x22ad00ce, 0x008bbd7a, 0x007a7a00, 0x22bd228b, 0x69bdadbd, 0x8b9c00bd, 0x69ce227a, 0x0058ad34, 0x22ce6900, 0x009cef69, 0x22bd2258, 0x7a9c9c22, 0x0046ce34, 0x007aad11, 0x00005800, 0x00580058, 0x22ad00ce, 0x0058bd34, 0x00ad9c9c, 0x00008b00, 0x0000008b, 0x00008b00, 0x00000000, 0x22222222, 0x00002211, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0058588b, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000ce34, 0x0000007a, 0x1158ad00, 0x00000000, 0x7a7a7a7a, 0x00693400, 0x00000000, 0x22690000, 0x00000000, 0x0000008b, 0x00000000, 0x0000589c, 0x11000000, 0x22690000, 0x00001100, 0x00001100, 0x22690000, 0x008b7a00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00004646, 0x00004600, 0x00464600, 0x00000000, 0x00000000, 0x0046ad00, 0x00000000, 0x008b0000, 0x00000000, 0x0000008b, 0x00000000, 0x00116900, 0x00000000, 0x008b0000, 0x00006900, 0x00006900, 0x008b0000, 0x00008b00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00226900, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00008b00, 0x00008b00, 0x00008b00, 0x00000000, 0x00000000, 0x00005800, 0x008b9c34, 0x00cead69, 0x007aad9c, 0x008badbd, 0x007aad34, 0x009cde7a, 0x008b9cce, 0x11cead69, 0x00589c00, 0x008bad69, 0x008bad69, 0x00008b00, 0x7aad9c9c, 0x22cead69, 0x007aad34, 0x22cead69, 0x008b9cde, 0x22de9c69, 0x007aad9c, 0x009cde7a, 0x118b00ad, 0x11ce00de, 0x34ce00de, 0x22ce34ad, 0x22ce00de, 0x00bd9cad, 0x00008b00, 0x00008b00, 0x00008b00, 0x229c347a, 0x00000000, 0x00000000, 0x009cad7a, 0x008b007a, 0x69340034, 0x4634009c, 0x46ce9cbd, 0x00226900, 0x4646008b, 0x008b008b, 0x00008b00, 0x0000007a, 0x00de7a00, 0x00008b00, 0x46468b69, 0x119c008b, 0x4646008b, 0x008b0069, 0x5846008b, 0x008b0000, 0x008b7a58, 0x00226900, 0x008b008b, 0x007a117a, 0x008b8b8b, 0x0058bd00, 0x008b008b, 0x00464646, 0x00467a00, 0x00008b00, 0x00008b46, 0x7a349c22, 0x00000000, 0x00000000, 0x4634227a, 0x009c007a, 0x58460022, 0x4646009c, 0x34460034, 0x00226900, 0x3446009c, 0x008b008b, 0x00008b00, 0x0000007a, 0x008b6911, 0x00008b00, 0x46468b69, 0x118b008b, 0x3458008b, 0x00ad0069, 0x584600ad, 0x008b0000, 0x0069348b, 0x00226911, 0x008b009c, 0x0011de00, 0x00adbd8b, 0x00699c11, 0x00469c34, 0x00225858, 0x00008b00, 0x00008b00, 0x00008b00, 0x00000000, 0x00000000, 0x00000000, 0x119c8bce, 0x22adad58, 0x007a9c46, 0x0069adad, 0x1169ad46, 0x008bbd7a, 0x0069adad, 0x22ad00bd, 0x118bce69, 0x0000007a, 0x227a34ce, 0x008bbd7a, 0x7a699c46, 0x69bd00ce, 0x007a9c22, 0x00bd9c58, 0x0069adad, 0x22ce9c34, 0x008bad58, 0x00009c8b, 0x00699cad, 0x11005800, 0x00580069, 0x11bd349c, 0x00009c00, 0x00adad9c, 0x00008b00, 0x00008b00, 0x00008b00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000008b, 0x00000000, 0x00000000, 0x00004646, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x008b0000, 0x0000008b, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00226900, 0x00000000, 0x00008b46, 0x00008b00, 0x00467a00, 0x00000000, 0x00000000, }; s32 g_DHudBaseX = 5; s32 g_DHudBaseY = 1; s32 g_DHudPosX = 24; s32 g_DHudPosY = 16; bool g_DHudIsEmpty = true; bool g_DHudInitialised = false; u32 var80061180nb[] = { 0xe7000000, 0x00000000, 0xba001402, 0x00000000, 0xba000602, 0x000000c0, 0xb900031d, 0x500a4240, 0xfc30b261, 0x5566db6d, 0xba001301, 0x00000000, 0xba000e02, 0x00000000, 0xb9000002, 0x00000000, 0xfd700000, 0x800606e8, 0xf5700000, 0x07000000, 0xe6000000, 0x00000000, 0xf3000000, 0x0753f080, 0xe7000000, 0x00000000, 0xf5682000, 0x00000000, 0xf2000000, 0x001fc050, 0xe6000000, 0x00000000, 0xb8000000, 0x00000000, }; struct dhudchar (*g_DHudCharBufferPtr)[NUM_ROWS] = NULL; Gfx *g_DHudFgGbiPtrs = NULL; Gfx *g_DHudBgGbiPtrs = NULL; s32 g_DHudNextPaletteIndex = 0; u32 var80061218nb = 0xb8000000; u32 var8006121cnb = 0x00000000; u32 var80061220nb = 0xc0000000; u32 var80061224nb = 0x00000000; Gfx g_DHudFgColour = gsDPSetPrimColor(0, 0, 0xff, 0xff, 0xff, 0); Gfx g_DHudBgColour = gsDPSetEnvColor(0, 0, 0, 0); #endif #if VERSION < VERSION_NTSC_1_0 s32 dhud00013fe0nb(s32 arg0, s32 arg1) { return 0; } #endif #if VERSION < VERSION_NTSC_1_0 s32 dhud00013ff0nb(s32 arg0, s32 arg1) { return 0; } #endif #if VERSION < VERSION_NTSC_1_0 void dhud00014000nb(void) { // empty } #endif void dhudInit(void) { #if VERSION < VERSION_NTSC_1_0 s32 i; s32 x; s32 y; u32 stack; Gfx cmd = {0, 0}; g_DHudCharBufferPtr = g_DHudCharBuffer; g_DHudFgGbiPtrs = g_DHudFgGbi; g_DHudBgGbiPtrs = g_DHudBgGbi; g_DHudInitialised = true; for (x = 0; x < NUM_COLS; x++) { for (y = 0; y < NUM_ROWS; y++) { g_DHudCharBufferPtr[x][y].c = '\0'; g_DHudCharBufferPtr[x][y].paletteindex = 0; } } for (i = 0; i < 32; i++) { g_DHudFgGbiPtrs[i] = cmd; g_DHudBgGbiPtrs[i] = cmd; } #endif } void dhudTryReset(void) { #if VERSION < VERSION_NTSC_1_0 if (g_DHudInitialised) { dhudReset(); } #endif } #if VERSION >= VERSION_NTSC_1_0 void func000137a0(void) { // empty } void func000137a8(void) { // empty } #endif #if VERSION < VERSION_NTSC_1_0 void dhudPutCharAt(s32 x, s32 y, char c) { s32 i; // Check if the current colour pair exists in the palette for (i = 0; i < 32; i++) { if (g_DHudFgColour.words.w1 == g_DHudFgGbiPtrs[i].words.w1 && g_DHudBgColour.words.w1 == g_DHudBgGbiPtrs[i].words.w1) { goto havepalette; } } // Add colours to pallete g_DHudFgGbiPtrs[g_DHudNextPaletteIndex] = g_DHudFgColour; g_DHudBgGbiPtrs[g_DHudNextPaletteIndex] = g_DHudBgColour; i = g_DHudNextPaletteIndex = (g_DHudNextPaletteIndex + 1) % 32; havepalette: g_DHudCharBufferPtr[x][y].c = c; g_DHudCharBufferPtr[x][y].paletteindex = i; if (c != '\0') { g_DHudIsEmpty = false; } } #endif #if VERSION < VERSION_NTSC_1_0 void dhudResetPos(void) { if (g_DHudInitialised) { g_DHudPosX = g_DHudBaseX; g_DHudPosY = g_DHudBaseY; } } #endif #if VERSION < VERSION_NTSC_1_0 void dhudReset(void) { s32 x; s32 y; if (g_DHudInitialised && g_DHudIsEmpty != true) { for (y = 0; y < NUM_ROWS; y++) { for (x = 0; x < NUM_COLS; x++) { dhudPutCharAt(x, y, '\0'); } } g_DHudIsEmpty = true; dhudResetPos(); dhud00014000nb(); g_DHudNextPaletteIndex = 0; } } #endif void dhudSetPos(s32 x, s32 y) { #if VERSION < VERSION_NTSC_1_0 if (g_DHudInitialised) { x += g_DHudBaseX; y += g_DHudBaseY; if (y >= (viGetHeight() - 10) / 7) { y = (viGetHeight() - 10) / 7 - 1; } g_DHudPosX = x; g_DHudPosY = y; } #endif } void dhudSetFgColour(s32 r, s32 g, s32 b, s32 a) { #if VERSION < VERSION_NTSC_1_0 if (g_DHudInitialised) { g_DHudFgColour.words.w1 = r << 24 | g << 16 | b << 8 | (255 - a); } #endif } void dhudSetBgColour(s32 r, s32 g, s32 b, s32 a) { #if VERSION < VERSION_NTSC_1_0 if (g_DHudInitialised) { g_DHudBgColour.words.w1 = r << 24 | g << 16 | b << 8 | (255 - a); } #endif } void dhudPrintChar(u8 c) { #if VERSION < VERSION_NTSC_1_0 s32 maxwidth = (viGetWidth() - 13) / 4; s32 maxheight = (viGetHeight() - 10) / 7; if (g_DHudInitialised) { if (c == '\0' || (c >= ' ' && c <= '~')) { dhudPutCharAt(g_DHudPosX, g_DHudPosY, c); } g_DHudPosX++; if (c == '\r' || c == '\n' || g_DHudPosX >= maxwidth) { g_DHudPosX = g_DHudBaseX; g_DHudPosY++; if (g_DHudPosY >= maxheight) { g_DHudPosY = g_DHudBaseY; } } } #endif } void dhudPrintCharAt(s32 x, s32 y, char c) { #if VERSION < VERSION_NTSC_1_0 if (g_DHudInitialised) { dhudSetPos(x, y); dhudPrintChar(c); } #endif } void dhudPrintString(char *str) { #if VERSION < VERSION_NTSC_1_0 if (g_DHudInitialised) { while (*str != '\0') { dhudPrintChar(*str++); } } #endif } void dhudPrintStringAt(s32 x, s32 y, char *str) { #if VERSION < VERSION_NTSC_1_0 if (g_DHudInitialised) { dhudSetPos(x, y); while (*str != '\0') { dhudPrintChar(*str++); } } #endif } #if VERSION >= VERSION_NTSC_1_0 Gfx *dhudRender(Gfx *gdl) { return gdl; } #else u32 var80061240nb = 0x000000ff; GLOBAL_ASM( glabel dhudRender /* 14684: 27bdff78 */ addiu $sp,$sp,-136 /* 14688: 3c0e8006 */ lui $t6,0x8006 /* 1468c: 8dce117c */ lw $t6,0x117c($t6) /* 14690: afb00018 */ sw $s0,0x18($sp) /* 14694: 00808025 */ or $s0,$a0,$zero /* 14698: afbf003c */ sw $ra,0x3c($sp) /* 1469c: afbe0038 */ sw $s8,0x38($sp) /* 146a0: afb70034 */ sw $s7,0x34($sp) /* 146a4: afb60030 */ sw $s6,0x30($sp) /* 146a8: afb5002c */ sw $s5,0x2c($sp) /* 146ac: afb40028 */ sw $s4,0x28($sp) /* 146b0: afb30024 */ sw $s3,0x24($sp) /* 146b4: afb20020 */ sw $s2,0x20($sp) /* 146b8: 15c00003 */ bnez $t6,.NB000146c8 /* 146bc: afb1001c */ sw $s1,0x1c($sp) /* 146c0: 100000a5 */ beqz $zero,.NB00014958 /* 146c4: 00801025 */ or $v0,$a0,$zero .NB000146c8: /* 146c8: 3c0f8006 */ lui $t7,0x8006 /* 146cc: 8def1178 */ lw $t7,0x1178($t7) /* 146d0: 02008825 */ or $s1,$s0,$zero /* 146d4: 2406ffff */ addiu $a2,$zero,-1 /* 146d8: 15e0009e */ bnez $t7,.NB00014954 /* 146dc: 0000a025 */ or $s4,$zero,$zero /* 146e0: 3c078006 */ lui $a3,0x8006 /* 146e4: 8ce71208 */ lw $a3,0x1208($a3) /* 146e8: 00004025 */ or $t0,$zero,$zero /* 146ec: 24090050 */ addiu $t1,$zero,0x50 /* 146f0: 00002825 */ or $a1,$zero,$zero .NB000146f4: /* 146f4: 00e82021 */ addu $a0,$a3,$t0 .NB000146f8: /* 146f8: 90820000 */ lbu $v0,0x0($a0) /* 146fc: 24a50001 */ addiu $a1,$a1,0x1 /* 14700: 90830001 */ lbu $v1,0x1($a0) /* 14704: 10400006 */ beqz $v0,.NB00014720 /* 14708: 00000000 */ sll $zero,$zero,0x0 /* 1470c: 50660004 */ beql $v1,$a2,.NB00014720 /* 14710: 26310018 */ addiu $s1,$s1,0x18 /* 14714: 26310010 */ addiu $s1,$s1,0x10 /* 14718: 00603025 */ or $a2,$v1,$zero /* 1471c: 26310018 */ addiu $s1,$s1,0x18 .NB00014720: /* 14720: 14a9fff5 */ bne $a1,$t1,.NB000146f8 /* 14724: 24840046 */ addiu $a0,$a0,0x46 /* 14728: 25080002 */ addiu $t0,$t0,0x2 /* 1472c: 29010046 */ slti $at,$t0,0x46 /* 14730: 5420fff0 */ bnezl $at,.NB000146f4 /* 14734: 00002825 */ or $a1,$zero,$zero /* 14738: 0fc588f2 */ jal gfxGetFreeGfx /* 1473c: 02002025 */ or $a0,$s0,$zero /* 14740: 02302023 */ subu $a0,$s1,$s0 /* 14744: 1c800003 */ bgtz $a0,.NB00014754 /* 14748: 24090050 */ addiu $t1,$zero,0x50 /* 1474c: 10000082 */ beqz $zero,.NB00014958 /* 14750: 02001025 */ or $v0,$s0,$zero .NB00014754: /* 14754: 2443f800 */ addiu $v1,$v0,-2048 /* 14758: 1c600004 */ bgtz $v1,.NB0001476c /* 1475c: 2413ffff */ addiu $s3,$zero,-1 /* 14760: 3c018006 */ lui $at,0x8006 /* 14764: 10000017 */ beqz $zero,.NB000147c4 /* 14768: ac201240 */ sw $zero,0x1240($at) .NB0001476c: /* 1476c: 0064082a */ slt $at,$v1,$a0 /* 14770: 10200011 */ beqz $at,.NB000147b8 /* 14774: 0003c200 */ sll $t8,$v1,0x8 /* 14778: 0303c023 */ subu $t8,$t8,$v1 /* 1477c: 0304001a */ div $zero,$t8,$a0 /* 14780: 14800002 */ bnez $a0,.NB0001478c /* 14784: 00000000 */ sll $zero,$zero,0x0 /* 14788: 0007000d */ break 0x7 .NB0001478c: /* 1478c: 2401ffff */ addiu $at,$zero,-1 /* 14790: 14810004 */ bne $a0,$at,.NB000147a4 /* 14794: 3c018000 */ lui $at,0x8000 /* 14798: 17010002 */ bne $t8,$at,.NB000147a4 /* 1479c: 00000000 */ sll $zero,$zero,0x0 /* 147a0: 0006000d */ break 0x6 .NB000147a4: /* 147a4: 3c018006 */ lui $at,0x8006 /* 147a8: 0000c812 */ mflo $t9 /* 147ac: ac391240 */ sw $t9,0x1240($at) /* 147b0: 10000005 */ beqz $zero,.NB000147c8 /* 147b4: 02001025 */ or $v0,$s0,$zero .NB000147b8: /* 147b8: 240a0100 */ addiu $t2,$zero,0x100 /* 147bc: 3c018006 */ lui $at,0x8006 /* 147c0: ac2a1240 */ sw $t2,0x1240($at) .NB000147c4: /* 147c4: 02001025 */ or $v0,$s0,$zero .NB000147c8: /* 147c8: 3c0c8006 */ lui $t4,0x8006 /* 147cc: 258c1180 */ addiu $t4,$t4,0x1180 /* 147d0: 3c0b0600 */ lui $t3,0x600 /* 147d4: 3c178006 */ lui $s7,0x8006 /* 147d8: 3c168006 */ lui $s6,0x8006 /* 147dc: 3c158006 */ lui $s5,0x8006 /* 147e0: ac4b0000 */ sw $t3,0x0($v0) /* 147e4: ac4c0004 */ sw $t4,0x4($v0) /* 147e8: 26100008 */ addiu $s0,$s0,0x8 /* 147ec: 26b51208 */ addiu $s5,$s5,0x1208 /* 147f0: 26d6120c */ addiu $s6,$s6,0x120c /* 147f4: 26f71210 */ addiu $s7,$s7,0x1210 /* 147f8: 0000a025 */ or $s4,$zero,$zero /* 147fc: 00004025 */ or $t0,$zero,$zero /* 14800: 3c1ee400 */ lui $s8,0xe400 .NB00014804: /* 14804: 00008825 */ or $s1,$zero,$zero /* 14808: 001170c0 */ sll $t6,$s1,0x3 .NB0001480c: /* 1480c: 01d17021 */ addu $t6,$t6,$s1 /* 14810: 8ead0000 */ lw $t5,0x0($s5) /* 14814: 000e7080 */ sll $t6,$t6,0x2 /* 14818: 01d17023 */ subu $t6,$t6,$s1 /* 1481c: 000e7040 */ sll $t6,$t6,0x1 /* 14820: 01ae7821 */ addu $t7,$t5,$t6 /* 14824: 01e81021 */ addu $v0,$t7,$t0 /* 14828: 90520000 */ lbu $s2,0x0($v0) /* 1482c: 90430001 */ lbu $v1,0x1($v0) /* 14830: 52400042 */ beqzl $s2,.NB0001493c /* 14834: 26310001 */ addiu $s1,$s1,0x1 /* 14838: 50730011 */ beql $v1,$s3,.NB00014880 /* 1483c: 02002025 */ or $a0,$s0,$zero /* 14840: 8ed80000 */ lw $t8,0x0($s6) /* 14844: 000310c0 */ sll $v0,$v1,0x3 /* 14848: 26100010 */ addiu $s0,$s0,0x10 /* 1484c: 0302c821 */ addu $t9,$t8,$v0 /* 14850: 8f210000 */ lw $at,0x0($t9) /* 14854: 00609825 */ or $s3,$v1,$zero /* 14858: ae01fff0 */ sw $at,-0x10($s0) /* 1485c: 8f2b0004 */ lw $t3,0x4($t9) /* 14860: ae0bfff4 */ sw $t3,-0xc($s0) /* 14864: 8eec0000 */ lw $t4,0x0($s7) /* 14868: 01826821 */ addu $t5,$t4,$v0 /* 1486c: 8da10000 */ lw $at,0x0($t5) /* 14870: ae01fff8 */ sw $at,-0x8($s0) /* 14874: 8daf0004 */ lw $t7,0x4($t5) /* 14878: ae0ffffc */ sw $t7,-0x4($s0) /* 1487c: 02002025 */ or $a0,$s0,$zero .NB00014880: /* 14880: 0fc588f2 */ jal gfxGetFreeGfx /* 14884: afa80040 */ sw $t0,0x40($sp) /* 14888: 28410400 */ slti $at,$v0,0x400 /* 1488c: 8fa80040 */ lw $t0,0x40($sp) /* 14890: 14200029 */ bnez $at,.NB00014938 /* 14894: 24090050 */ addiu $t1,$zero,0x50 /* 14898: 00111900 */ sll $v1,$s1,0x4 /* 1489c: 24780010 */ addiu $t8,$v1,0x10 /* 148a0: 330a0fff */ andi $t2,$t8,0xfff /* 148a4: 001420c0 */ sll $a0,$s4,0x3 /* 148a8: 00942023 */ subu $a0,$a0,$s4 /* 148ac: 000acb00 */ sll $t9,$t2,0xc /* 148b0: 00042080 */ sll $a0,$a0,0x2 /* 148b4: 306f0fff */ andi $t7,$v1,0xfff /* 148b8: 000fc300 */ sll $t8,$t7,0xc /* 148bc: 308a0fff */ andi $t2,$a0,0xfff /* 148c0: 033e5825 */ or $t3,$t9,$s8 /* 148c4: 030ac825 */ or $t9,$t8,$t2 /* 148c8: 248c001c */ addiu $t4,$a0,0x1c /* 148cc: 02001025 */ or $v0,$s0,$zero /* 148d0: 2646ffe0 */ addiu $a2,$s2,-32 /* 148d4: 0006c143 */ sra $t8,$a2,0x5 /* 148d8: 318e0fff */ andi $t6,$t4,0xfff /* 148dc: 016e6825 */ or $t5,$t3,$t6 /* 148e0: 001850c0 */ sll $t2,$t8,0x3 /* 148e4: 26100008 */ addiu $s0,$s0,0x8 /* 148e8: 02002825 */ or $a1,$s0,$zero /* 148ec: 01585023 */ subu $t2,$t2,$t8 /* 148f0: ac4d0000 */ sw $t5,0x0($v0) /* 148f4: ac590004 */ sw $t9,0x4($v0) /* 148f8: 30cd001f */ andi $t5,$a2,0x1f /* 148fc: 000a5140 */ sll $t2,$t2,0x5 /* 14900: 3c0cb400 */ lui $t4,0xb400 /* 14904: acac0000 */ sw $t4,0x0($a1) /* 14908: 3159ffff */ andi $t9,$t2,0xffff /* 1490c: 000d7dc0 */ sll $t7,$t5,0x17 /* 14910: 26100008 */ addiu $s0,$s0,0x8 /* 14914: 02003825 */ or $a3,$s0,$zero /* 14918: 01f96025 */ or $t4,$t7,$t9 /* 1491c: acac0004 */ sw $t4,0x4($a1) /* 14920: 3c0e0400 */ lui $t6,0x400 /* 14924: 35ce0400 */ ori $t6,$t6,0x400 /* 14928: 3c0bb300 */ lui $t3,0xb300 /* 1492c: aceb0000 */ sw $t3,0x0($a3) /* 14930: acee0004 */ sw $t6,0x4($a3) /* 14934: 26100008 */ addiu $s0,$s0,0x8 .NB00014938: /* 14938: 26310001 */ addiu $s1,$s1,0x1 .NB0001493c: /* 1493c: 5629ffb3 */ bnel $s1,$t1,.NB0001480c /* 14940: 001170c0 */ sll $t6,$s1,0x3 /* 14944: 26940001 */ addiu $s4,$s4,0x1 /* 14948: 24010023 */ addiu $at,$zero,0x23 /* 1494c: 1681ffad */ bne $s4,$at,.NB00014804 /* 14950: 25080002 */ addiu $t0,$t0,0x2 .NB00014954: /* 14954: 02001025 */ or $v0,$s0,$zero .NB00014958: /* 14958: 8fbf003c */ lw $ra,0x3c($sp) /* 1495c: 8fb00018 */ lw $s0,0x18($sp) /* 14960: 8fb1001c */ lw $s1,0x1c($sp) /* 14964: 8fb20020 */ lw $s2,0x20($sp) /* 14968: 8fb30024 */ lw $s3,0x24($sp) /* 1496c: 8fb40028 */ lw $s4,0x28($sp) /* 14970: 8fb5002c */ lw $s5,0x2c($sp) /* 14974: 8fb60030 */ lw $s6,0x30($sp) /* 14978: 8fb70034 */ lw $s7,0x34($sp) /* 1497c: 8fbe0038 */ lw $s8,0x38($sp) /* 14980: 03e00008 */ jr $ra /* 14984: 27bd0088 */ addiu $sp,$sp,0x88 ); #endif