#include #include "constants.h" #include "game/tex.h" #include "game/camera.h" #include "game/player.h" #include "game/file.h" #include "game/game_176080.h" #include "game/gfxmemory.h" #include "game/options.h" #include "bss.h" #include "lib/vi.h" #include "lib/memp.h" #include "lib/mtx.h" #include "data.h" #include "types.h" #define TO_U16_A(x) ((u16)(x)) #define TO_U16_B(x) (x & 0xffff) #define TO_U16_C(x) ((u16)(x & 0xffff)) #define ADD_LOW_AND_HI_16_TRUNCATE(reg, add) ((TO_U16_B(TO_U16_A((reg) >> 16) + (add)) << 16) | TO_U16_B(TO_U16_A(reg) + (add))) #define ADD_LOW_AND_HI_16_MOD(reg, add) ((((((reg >> 16) & 0xffff) + add) % 0xffff) << 16) | (((((reg >> 0) & 0xffff) + add) % 0xffff) << 0)) Mtxf var80092830; Mtx *var80092870; u16 g_ViPerspScale; u8 g_ViFrontIndex; u8 g_ViBackIndex; struct rend_vidat g_ViDataArray[] = { { 0, 0, 0, 0, 320, 220, // x and y 60, // fovy 1.4545454978943f, // aspect 30, // znear 10000, // zfar 320, 220, // bufx and bufy 320, 220, // viewx and viewy 0, 0, // viewleft and viewtop true, // usezbuf 0, }, { 0, 0, 0, 0, 320, 220, // x and y 60, // fovy 1.4545454978943f, // aspect 30, // znear 10000, // zfar 320, 220, // bufx and bufy 320, 220, // viewx and viewy 0, 0, // viewleft and viewtop true, // usezbuf 0, }, }; s32 var8005d588 = 0; s32 var8005d58c = 0; struct rend_vidat *g_ViFrontData = &g_ViDataArray[0]; struct rend_vidat *g_ViBackData = &g_ViDataArray[0]; bool g_ViIs16Bit = true; bool g_ViReconfigured = false; s32 g_ViSlot = 0; void viConfigureForLogos(void) { g_ViFrontIndex = 0; g_ViBackIndex = 1; g_ViFrontData = g_ViDataArray + g_ViFrontIndex; g_ViBackData = g_ViDataArray + g_ViBackIndex; #if VERSION >= VERSION_PAL_FINAL if (IS4MB()) { g_ViDataArray[0].y = 220; g_ViDataArray[0].bufy = 220; g_ViDataArray[0].viewy = 220; g_ViDataArray[1].y = 220; g_ViDataArray[1].bufy = 220; g_ViDataArray[1].viewy = 220; var8005d588 = 0; var8005d58c = 0; } else { var8005d588 = 0; var8005d58c = VERSION >= VERSION_JPN_FINAL ? 0 : 12; } #else var8005d588 = 0; var8005d58c = 0; if (IS4MB()) { g_ViDataArray[0].y = 220; g_ViDataArray[0].bufy = 220; g_ViDataArray[0].viewy = 220; g_ViDataArray[1].y = 220; g_ViDataArray[1].bufy = 220; g_ViDataArray[1].viewy = 220; } #endif } /** * Configure the VI to display the copyright or accessingpak texture. * * The texture is the first thing displayed after power on. * * Both textures are 507 x 48, but the framebuffer width is 576. */ void viConfigureForCopyright(u8 *texturedata) { s32 i; for (i = 0; i < 2; i++) { g_FrameBuffers[i] = texturedata; g_ViDataArray[i].x = 576; g_ViDataArray[i].bufx = 576; g_ViDataArray[i].viewx = (VERSION >= VERSION_NTSC_1_0 ? 576 : 480); g_ViDataArray[i].y = 48; g_ViDataArray[i].bufy = 48; g_ViDataArray[i].viewy = 48; } g_ViFrontData->fb = g_FrameBuffers[g_ViFrontIndex]; g_ViBackData->fb = g_FrameBuffers[g_ViBackIndex]; g_ViReconfigured = true; g_Vars.fourmeg2player = false; } /** * Configure the VI to display the legal screen. * * It's also used for the "check controllers" message * if controller 1 is not connected. */ void viConfigureForLegal(void) { s32 i; for (i = 0; i < 2; i++) { g_ViDataArray[i].x = 320; g_ViDataArray[i].bufx = 320; g_ViDataArray[i].viewx = 320; g_ViDataArray[i].y = 220; g_ViDataArray[i].bufy = 220; g_ViDataArray[i].viewy = 220; } g_Vars.fourmeg2player = false; #if PAL playerResetLoResIf4Mb(); #endif } const s16 g_ViModeWidths[] = {320, 320, 640}; #if PAL const s16 g_ViModeHeights[] = {220, 220, 504}; #else const s16 g_ViModeHeights[] = {220, 220, 440}; #endif /** * Allocate the colour framebuffers for the given stage. * * Regardless of whether hi-res is being used or not, the buffers are allocated * for hi-res. This is because hi-res can be changed mid-stage, and the engine * cannot reallocate the frame buffer without clearing the stage's entire memory * pool. * * The same is probably true for wide and cinema modes. */ void viReset(s32 stagenum) { s32 i; s32 fbsize; u8 *ptr; u8 *fb0; u8 *fb1; g_Vars.fourmeg2player = false; if (stagenum == STAGE_TITLE || stagenum == STAGE_TEST_OLD) { if (IS4MB()) { viSetMode(VIMODE_HI); fbsize = 640 * 440 * 2; } else { viSetMode(VIMODE_HI); fbsize = g_ViModeWidths[2] * g_ViModeHeights[2] * 2; } } else { viSetMode(VIMODE_LO); if (1); fbsize = IS4MB() ? 320 * 220 * 2 : 320 * 220 * 4; if (IS4MB() && PLAYERCOUNT() == 2) { #if VERSION >= VERSION_NTSC_1_0 fbsize = 320 * 220; #else fbsize = 320 * 240; #endif g_Vars.fourmeg2player = true; } else if ((g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0) && PLAYERCOUNT() == 2) { #if VERSION >= VERSION_JPN_FINAL fbsize = 320 * 220 * 2; #elif VERSION >= VERSION_PAL_FINAL fbsize = 320 * 266 * 2; #elif VERSION >= VERSION_PAL_BETA fbsize = 320 * 252 * 2; #else fbsize = 320 * 220 * 2; #endif } } ptr = mempAlloc(fbsize * 2 + 0x40, MEMPOOL_STAGE); ptr = (u8 *)(((u32)ptr + 0x3f) & 0xffffffc0); g_FrameBuffers[0] = &ptr[0]; g_FrameBuffers[1] = fbsize + ptr; g_ViFrontData->fb = g_FrameBuffers[g_ViFrontIndex]; g_ViBackData->fb = g_FrameBuffers[g_ViBackIndex]; fb0 = g_FrameBuffers[0]; fb1 = g_FrameBuffers[1]; for (i = 0; i < fbsize; i++) { fb0[i] = 0; fb1[i] = 0; } g_ViReconfigured = true; } /** * If black is true, set the video output to black indefinitely. * g_ViUnblackTimer is set to 3 which causes the timer to be paused. * * If black is false, set the timer to 2. This causes it to tick down once per * frame and unblack once it reaches 0. */ void viBlack(bool black) { black += 2; g_ViUnblackTimer = black; } void vi00009ed4(void) { s32 prevmask; s32 offset; s32 reg; if (g_ViShakeTimer != 0) { g_ViShakeTimer--; if (g_ViShakeTimer == 0) { g_ViShakeIntensity = 0; } } offset = g_ViShakeDirection * g_ViShakeIntensity; g_ViShakeDirection = -g_ViShakeDirection; #if VERSION >= VERSION_NTSC_1_0 prevmask = osSetIntMask(1); #endif reg = var8008de0c; var8008dd60[1 - var8005ce74]->fldRegs[0].vStart = ADD_LOW_AND_HI_16_TRUNCATE(reg, offset); reg = var8008de10; var8008dd60[1 - var8005ce74]->fldRegs[1].vStart = ADD_LOW_AND_HI_16_TRUNCATE(reg, offset); #if VERSION >= VERSION_NTSC_1_0 osSetIntMask(prevmask); #endif osViSetMode(var8008dd60[1 - var8005ce74]); osViBlack(g_ViUnblackTimer); osViSetXScale(g_ViXScalesBySlot[1 - var8005ce74]); osViSetYScale(g_ViYScalesBySlot[1 - var8005ce74]); osViSetSpecialFeatures(OS_VI_GAMMA_OFF | OS_VI_DITHER_FILTER_ON); } #if VERSION == VERSION_PAL_FINAL GLOBAL_ASM( glabel viUpdateMode /* 9f64: 3c098006 */ lui $t1,0x8006 /* 9f68: 3c0e8006 */ lui $t6,0x8006 /* 9f6c: 8dced230 */ lw $t6,-0x2dd0($t6) /* 9f70: 8d29d234 */ lw $t1,-0x2dcc($t1) /* 9f74: 27bdffe8 */ addiu $sp,$sp,-24 /* 9f78: afbf0014 */ sw $ra,0x14($sp) /* 9f7c: 91cf0000 */ lbu $t7,0x0($t6) /* 9f80: 91220000 */ lbu $v0,0x0($t1) /* 9f84: 504f0014 */ beql $v0,$t7,.PF00009fd8 /* 9f88: 85380004 */ lh $t8,0x4($t1) /* 9f8c: 10400008 */ beqz $v0,.PF00009fb0 /* 9f90: 00401825 */ move $v1,$v0 /* 9f94: 241f0001 */ li $ra,0x1 /* 9f98: 105f000e */ beq $v0,$ra,.PF00009fd4 /* 9f9c: 24010002 */ li $at,0x2 /* 9fa0: 5061000d */ beql $v1,$at,.PF00009fd8 /* 9fa4: 85380004 */ lh $t8,0x4($t1) /* 9fa8: 1000000b */ b .PF00009fd8 /* 9fac: 85380004 */ lh $t8,0x4($t1) .PF00009fb0: /* 9fb0: 3c013f80 */ lui $at,0x3f80 /* 9fb4: 44816000 */ mtc1 $at,$f12 /* 9fb8: 0c0121fc */ jal osViSetYScale /* 9fbc: 00000000 */ nop /* 9fc0: 0c012178 */ jal osViBlack /* 9fc4: 24040001 */ li $a0,0x1 /* 9fc8: 3c098006 */ lui $t1,0x8006 /* 9fcc: 8d29d234 */ lw $t1,-0x2dcc($t1) /* 9fd0: 91220000 */ lbu $v0,0x0($t1) .PF00009fd4: /* 9fd4: 85380004 */ lh $t8,0x4($t1) .PF00009fd8: /* 9fd8: 85390018 */ lh $t9,0x18($t1) /* 9fdc: 852e0006 */ lh $t6,0x6($t1) /* 9fe0: 44982000 */ mtc1 $t8,$f4 /* 9fe4: 852f001a */ lh $t7,0x1a($t1) /* 9fe8: 44994000 */ mtc1 $t9,$f8 /* 9fec: 468021a0 */ cvt.s.w $f6,$f4 /* 9ff0: 448e8000 */ mtc1 $t6,$f16 /* 9ff4: 448f2000 */ mtc1 $t7,$f4 /* 9ff8: 3c0d8009 */ lui $t5,0x8009 /* 9ffc: 241f0001 */ li $ra,0x1 /* a000: 468042a0 */ cvt.s.w $f10,$f8 /* a004: 3c0c8006 */ lui $t4,0x8006 /* a008: 3c013f80 */ lui $at,0x3f80 /* a00c: 25ade35c */ addiu $t5,$t5,-7332 /* a010: 468084a0 */ cvt.s.w $f18,$f16 /* a014: 46802220 */ cvt.s.w $f8,$f4 /* a018: 460a3083 */ div.s $f2,$f6,$f10 /* a01c: 14400003 */ bnez $v0,.PF0000a02c /* a020: 46089003 */ div.s $f0,$f18,$f8 /* a024: 44810000 */ mtc1 $at,$f0 /* a028: 00000000 */ nop .PF0000a02c: /* a02c: 8d8cd240 */ lw $t4,-0x2dc0($t4) /* a030: 3c018006 */ lui $at,0x8006 /* a034: 000c5880 */ sll $t3,$t4,0x2 /* a038: 002b0821 */ addu $at,$at,$t3 /* a03c: e422cb28 */ swc1 $f2,-0x34d8($at) /* a040: 3c018006 */ lui $at,0x8006 /* a044: 002b0821 */ addu $at,$at,$t3 /* a048: e420cb30 */ swc1 $f0,-0x34d0($at) /* a04c: 91220000 */ lbu $v0,0x0($t1) /* a050: 57e200a3 */ bnel $ra,$v0,.PF0000a2e0 /* a054: 24010002 */ li $at,0x2 /* a058: 3c0a8006 */ lui $t2,0x8006 /* a05c: 8d4ad238 */ lw $t2,-0x2dc8($t2) /* a060: 3c1f8009 */ lui $ra,0x8009 /* a064: 000c7880 */ sll $t7,$t4,0x2 /* a068: 11400019 */ beqz $t2,.PF0000a0d0 /* a06c: 27ffe360 */ addiu $ra,$ra,-7328 /* a070: 000cc080 */ sll $t8,$t4,0x2 /* a074: 030cc021 */ addu $t8,$t8,$t4 /* a078: 3c198009 */ lui $t9,0x8009 /* a07c: 2739e210 */ addiu $t9,$t9,-7664 /* a080: 0018c100 */ sll $t8,$t8,0x4 /* a084: 03191021 */ addu $v0,$t8,$t9 /* a088: 3c0e8006 */ lui $t6,0x8006 /* a08c: 25cef8c0 */ addiu $t6,$t6,-1856 /* a090: 25d80048 */ addiu $t8,$t6,0x48 /* a094: 0040c825 */ move $t9,$v0 .PF0000a098: /* a098: 8dc10000 */ lw $at,0x0($t6) /* a09c: 25ce000c */ addiu $t6,$t6,0xc /* a0a0: 2739000c */ addiu $t9,$t9,0xc /* a0a4: af21fff4 */ sw $at,-0xc($t9) /* a0a8: 8dc1fff8 */ lw $at,-0x8($t6) /* a0ac: af21fff8 */ sw $at,-0x8($t9) /* a0b0: 8dc1fffc */ lw $at,-0x4($t6) /* a0b4: 15d8fff8 */ bne $t6,$t8,.PF0000a098 /* a0b8: af21fffc */ sw $at,-0x4($t9) /* a0bc: 8dc10000 */ lw $at,0x0($t6) /* a0c0: af210000 */ sw $at,0x0($t9) /* a0c4: 8dd80004 */ lw $t8,0x4($t6) /* a0c8: 10000017 */ b .PF0000a128 /* a0cc: af380004 */ sw $t8,0x4($t9) .PF0000a0d0: /* a0d0: 01ec7821 */ addu $t7,$t7,$t4 /* a0d4: 3c188009 */ lui $t8,0x8009 /* a0d8: 2718e210 */ addiu $t8,$t8,-7664 /* a0dc: 000f7900 */ sll $t7,$t7,0x4 /* a0e0: 01f81021 */ addu $v0,$t7,$t8 /* a0e4: 3c0e8006 */ lui $t6,0x8006 /* a0e8: 25cefa00 */ addiu $t6,$t6,-1536 /* a0ec: 25cf0048 */ addiu $t7,$t6,0x48 /* a0f0: 0040c025 */ move $t8,$v0 .PF0000a0f4: /* a0f4: 8dc10000 */ lw $at,0x0($t6) /* a0f8: 25ce000c */ addiu $t6,$t6,0xc /* a0fc: 2718000c */ addiu $t8,$t8,0xc /* a100: af01fff4 */ sw $at,-0xc($t8) /* a104: 8dc1fff8 */ lw $at,-0x8($t6) /* a108: af01fff8 */ sw $at,-0x8($t8) /* a10c: 8dc1fffc */ lw $at,-0x4($t6) /* a110: 15cffff8 */ bne $t6,$t7,.PF0000a0f4 /* a114: af01fffc */ sw $at,-0x4($t8) /* a118: 8dc10000 */ lw $at,0x0($t6) /* a11c: af010000 */ sw $at,0x0($t8) /* a120: 8dcf0004 */ lw $t7,0x4($t6) /* a124: af0f0004 */ sw $t7,0x4($t8) .PF0000a128: /* a128: 85390018 */ lh $t9,0x18($t1) /* a12c: 24010280 */ li $at,0x280 /* a130: 24080400 */ li $t0,0x400 /* a134: ac590008 */ sw $t9,0x8($v0) /* a138: 852f0018 */ lh $t7,0x18($t1) /* a13c: 8c44001c */ lw $a0,0x1c($v0) /* a140: 3c078006 */ lui $a3,0x8006 /* a144: 000f7280 */ sll $t6,$t7,0xa /* a148: 01c1001a */ div $zero,$t6,$at /* a14c: 0000c012 */ mflo $t8 /* a150: ac580020 */ sw $t8,0x20($v0) /* a154: 85390018 */ lh $t9,0x18($t1) /* a158: 3406ffff */ li $a2,0xffff /* a15c: 00197840 */ sll $t7,$t9,0x1 /* a160: ac4f0028 */ sw $t7,0x28($v0) /* a164: 852e0018 */ lh $t6,0x18($t1) /* a168: ac48002c */ sw $t0,0x2c($v0) /* a16c: ac480040 */ sw $t0,0x40($v0) /* a170: 000ec040 */ sll $t8,$t6,0x1 /* a174: ac58003c */ sw $t8,0x3c($v0) /* a178: 8ce7d228 */ lw $a3,-0x2dd8($a3) /* a17c: 0004cc03 */ sra $t9,$a0,0x10 /* a180: 332fffff */ andi $t7,$t9,0xffff /* a184: 01e77021 */ addu $t6,$t7,$a3 /* a188: 01c6001a */ div $zero,$t6,$a2 /* a18c: 14c00002 */ bnez $a2,.PF0000a198 /* a190: 00000000 */ nop /* a194: 0007000d */ break 0x7 .PF0000a198: /* a198: 2401ffff */ li $at,-1 /* a19c: 14c10004 */ bne $a2,$at,.PF0000a1b0 /* a1a0: 3c018000 */ lui $at,0x8000 /* a1a4: 15c10002 */ bne $t6,$at,.PF0000a1b0 /* a1a8: 00000000 */ nop /* a1ac: 0006000d */ break 0x6 .PF0000a1b0: /* a1b0: 308fffff */ andi $t7,$a0,0xffff /* a1b4: 0000c010 */ mfhi $t8 /* a1b8: 01e77021 */ addu $t6,$t7,$a3 /* a1bc: 0018cc00 */ sll $t9,$t8,0x10 /* a1c0: 01c6001a */ div $zero,$t6,$a2 /* a1c4: 14c00002 */ bnez $a2,.PF0000a1d0 /* a1c8: 00000000 */ nop /* a1cc: 0007000d */ break 0x7 .PF0000a1d0: /* a1d0: 2401ffff */ li $at,-1 /* a1d4: 14c10004 */ bne $a2,$at,.PF0000a1e8 /* a1d8: 3c018000 */ lui $at,0x8000 /* a1dc: 15c10002 */ bne $t6,$at,.PF0000a1e8 /* a1e0: 00000000 */ nop /* a1e4: 0006000d */ break 0x6 .PF0000a1e8: /* a1e8: 0000c010 */ mfhi $t8 /* a1ec: 03381825 */ or $v1,$t9,$t8 /* a1f0: ac43001c */ sw $v1,0x1c($v0) /* a1f4: 3c018009 */ lui $at,0x8009 /* a1f8: ac23e358 */ sw $v1,-0x1ca8($at) /* a1fc: 8525001a */ lh $a1,0x1a($t1) /* a200: 24180140 */ li $t8,0x140 /* a204: 3c048006 */ lui $a0,0x8006 /* a208: 00057a80 */ sll $t7,$a1,0xa /* a20c: 000f7282 */ srl $t6,$t7,0xa /* a210: 29c1012d */ slti $at,$t6,0x12d /* a214: 14200002 */ bnez $at,.PF0000a220 /* a218: 01c02825 */ move $a1,$t6 /* a21c: 000e2843 */ sra $a1,$t6,0x1 .PF0000a220: /* a220: 03053823 */ subu $a3,$t8,$a1 /* a224: 24ef0002 */ addiu $t7,$a3,0x2 /* a228: 24b9fffe */ addiu $t9,$a1,-2 /* a22c: 0019c040 */ sll $t8,$t9,0x1 /* a230: 000f7400 */ sll $t6,$t7,0x10 /* a234: 00f87821 */ addu $t7,$a3,$t8 /* a238: 25f90002 */ addiu $t9,$t7,0x2 /* a23c: 8c84d22c */ lw $a0,-0x2dd4($a0) /* a240: 01d94025 */ or $t0,$t6,$t9 /* a244: 0008c403 */ sra $t8,$t0,0x10 /* a248: 330fffff */ andi $t7,$t8,0xffff /* a24c: 01e47021 */ addu $t6,$t7,$a0 /* a250: 01c6001a */ div $zero,$t6,$a2 /* a254: 14c00002 */ bnez $a2,.PF0000a260 /* a258: 00000000 */ nop /* a25c: 0007000d */ break 0x7 .PF0000a260: /* a260: 2401ffff */ li $at,-1 /* a264: 14c10004 */ bne $a2,$at,.PF0000a278 /* a268: 3c018000 */ lui $at,0x8000 /* a26c: 15c10002 */ bne $t6,$at,.PF0000a278 /* a270: 00000000 */ nop /* a274: 0006000d */ break 0x6 .PF0000a278: /* a278: 310fffff */ andi $t7,$t0,0xffff /* a27c: 01e47021 */ addu $t6,$t7,$a0 /* a280: 0000c810 */ mfhi $t9 /* a284: 0019c400 */ sll $t8,$t9,0x10 /* a288: 240f0001 */ li $t7,0x1 /* a28c: 01c6001a */ div $zero,$t6,$a2 /* a290: 14c00002 */ bnez $a2,.PF0000a29c /* a294: 00000000 */ nop /* a298: 0007000d */ break 0x7 .PF0000a29c: /* a29c: 2401ffff */ li $at,-1 /* a2a0: 14c10004 */ bne $a2,$at,.PF0000a2b4 /* a2a4: 3c018000 */ lui $at,0x8000 /* a2a8: 15c10002 */ bne $t6,$at,.PF0000a2b4 /* a2ac: 00000000 */ nop /* a2b0: 0006000d */ break 0x6 .PF0000a2b4: /* a2b4: 0000c810 */ mfhi $t9 /* a2b8: 03191825 */ or $v1,$t8,$t9 /* a2bc: 3c018006 */ lui $at,0x8006 /* a2c0: ac430030 */ sw $v1,0x30($v0) /* a2c4: ada30000 */ sw $v1,0x0($t5) /* a2c8: ac430044 */ sw $v1,0x44($v0) /* a2cc: afe30000 */ sw $v1,0x0($ra) /* a2d0: 002b0821 */ addu $at,$at,$t3 /* a2d4: 100000dd */ b .PF0000a64c /* a2d8: ac2fcb38 */ sw $t7,-0x34c8($at) /* a2dc: 24010002 */ li $at,0x2 .PF0000a2e0: /* a2e0: 144100d5 */ bne $v0,$at,.PF0000a638 /* a2e4: 000c7080 */ sll $t6,$t4,0x2 /* a2e8: 01cc7021 */ addu $t6,$t6,$t4 /* a2ec: 3c188009 */ lui $t8,0x8009 /* a2f0: 2718e210 */ addiu $t8,$t8,-7664 /* a2f4: 000e7100 */ sll $t6,$t6,0x4 /* a2f8: 01d81021 */ addu $v0,$t6,$t8 /* a2fc: 3c198006 */ lui $t9,0x8006 /* a300: 3c0d8009 */ lui $t5,0x8009 /* a304: 2739fb90 */ addiu $t9,$t9,-1136 /* a308: 25ade35c */ addiu $t5,$t5,-7332 /* a30c: 3406ffff */ li $a2,0xffff /* a310: 24080800 */ li $t0,0x800 /* a314: 272e0048 */ addiu $t6,$t9,0x48 /* a318: 0040c025 */ move $t8,$v0 .PF0000a31c: /* a31c: 8f210000 */ lw $at,0x0($t9) /* a320: 2739000c */ addiu $t9,$t9,0xc /* a324: 2718000c */ addiu $t8,$t8,0xc /* a328: af01fff4 */ sw $at,-0xc($t8) /* a32c: 8f21fff8 */ lw $at,-0x8($t9) /* a330: af01fff8 */ sw $at,-0x8($t8) /* a334: 8f21fffc */ lw $at,-0x4($t9) /* a338: 172efff8 */ bne $t9,$t6,.PF0000a31c /* a33c: af01fffc */ sw $at,-0x4($t8) /* a340: 8f210000 */ lw $at,0x0($t9) /* a344: 3c078006 */ lui $a3,0x8006 /* a348: 3c048006 */ lui $a0,0x8006 /* a34c: af010000 */ sw $at,0x0($t8) /* a350: 8f2e0004 */ lw $t6,0x4($t9) /* a354: 24010280 */ li $at,0x280 /* a358: 3c1f8009 */ lui $ra,0x8009 /* a35c: af0e0004 */ sw $t6,0x4($t8) /* a360: 852f0018 */ lh $t7,0x18($t1) /* a364: 8c45001c */ lw $a1,0x1c($v0) /* a368: 27ffe360 */ addiu $ra,$ra,-7328 /* a36c: ac4f0008 */ sw $t7,0x8($v0) /* a370: 852e0018 */ lh $t6,0x18($t1) /* a374: ac48002c */ sw $t0,0x2c($v0) /* a378: ac480040 */ sw $t0,0x40($v0) /* a37c: 000eca80 */ sll $t9,$t6,0xa /* a380: 0321001a */ div $zero,$t9,$at /* a384: 0000c012 */ mflo $t8 /* a388: ac580020 */ sw $t8,0x20($v0) /* a38c: 852f0018 */ lh $t7,0x18($t1) /* a390: 3c0a8006 */ lui $t2,0x8006 /* a394: 000f7040 */ sll $t6,$t7,0x1 /* a398: ac4e0028 */ sw $t6,0x28($v0) /* a39c: 85390018 */ lh $t9,0x18($t1) /* a3a0: 00057c03 */ sra $t7,$a1,0x10 /* a3a4: 31eeffff */ andi $t6,$t7,0xffff /* a3a8: 0019c080 */ sll $t8,$t9,0x2 /* a3ac: ac58003c */ sw $t8,0x3c($v0) /* a3b0: 8ce7d228 */ lw $a3,-0x2dd8($a3) /* a3b4: 01c7c821 */ addu $t9,$t6,$a3 /* a3b8: 0326001a */ div $zero,$t9,$a2 /* a3bc: 14c00002 */ bnez $a2,.PF0000a3c8 /* a3c0: 00000000 */ nop /* a3c4: 0007000d */ break 0x7 .PF0000a3c8: /* a3c8: 2401ffff */ li $at,-1 /* a3cc: 14c10004 */ bne $a2,$at,.PF0000a3e0 /* a3d0: 3c018000 */ lui $at,0x8000 /* a3d4: 17210002 */ bne $t9,$at,.PF0000a3e0 /* a3d8: 00000000 */ nop /* a3dc: 0006000d */ break 0x6 .PF0000a3e0: /* a3e0: 30aeffff */ andi $t6,$a1,0xffff /* a3e4: 0000c010 */ mfhi $t8 /* a3e8: 01c7c821 */ addu $t9,$t6,$a3 /* a3ec: 00187c00 */ sll $t7,$t8,0x10 /* a3f0: 0326001a */ div $zero,$t9,$a2 /* a3f4: 14c00002 */ bnez $a2,.PF0000a400 /* a3f8: 00000000 */ nop /* a3fc: 0007000d */ break 0x7 .PF0000a400: /* a400: 2401ffff */ li $at,-1 /* a404: 14c10004 */ bne $a2,$at,.PF0000a418 /* a408: 3c018000 */ lui $at,0x8000 /* a40c: 17210002 */ bne $t9,$at,.PF0000a418 /* a410: 00000000 */ nop /* a414: 0006000d */ break 0x6 .PF0000a418: /* a418: 0000c010 */ mfhi $t8 /* a41c: 01f81825 */ or $v1,$t7,$t8 /* a420: ac43001c */ sw $v1,0x1c($v0) /* a424: 3c018009 */ lui $at,0x8009 /* a428: ac23e358 */ sw $v1,-0x1ca8($at) /* a42c: 8c450030 */ lw $a1,0x30($v0) /* a430: 8c84d22c */ lw $a0,-0x2dd4($a0) /* a434: 00057403 */ sra $t6,$a1,0x10 /* a438: 31d9ffff */ andi $t9,$t6,0xffff /* a43c: 03247821 */ addu $t7,$t9,$a0 /* a440: 01e6001a */ div $zero,$t7,$a2 /* a444: 14c00002 */ bnez $a2,.PF0000a450 /* a448: 00000000 */ nop /* a44c: 0007000d */ break 0x7 .PF0000a450: /* a450: 2401ffff */ li $at,-1 /* a454: 14c10004 */ bne $a2,$at,.PF0000a468 /* a458: 3c018000 */ lui $at,0x8000 /* a45c: 15e10002 */ bne $t7,$at,.PF0000a468 /* a460: 00000000 */ nop /* a464: 0006000d */ break 0x6 .PF0000a468: /* a468: 30b9ffff */ andi $t9,$a1,0xffff /* a46c: 03247821 */ addu $t7,$t9,$a0 /* a470: 0000c010 */ mfhi $t8 /* a474: 8c450044 */ lw $a1,0x44($v0) /* a478: 00187400 */ sll $t6,$t8,0x10 /* a47c: 01e6001a */ div $zero,$t7,$a2 /* a480: 14c00002 */ bnez $a2,.PF0000a48c /* a484: 00000000 */ nop /* a488: 0007000d */ break 0x7 .PF0000a48c: /* a48c: 2401ffff */ li $at,-1 /* a490: 14c10004 */ bne $a2,$at,.PF0000a4a4 /* a494: 3c018000 */ lui $at,0x8000 /* a498: 15e10002 */ bne $t7,$at,.PF0000a4a4 /* a49c: 00000000 */ nop /* a4a0: 0006000d */ break 0x6 .PF0000a4a4: /* a4a4: 0000c010 */ mfhi $t8 /* a4a8: 0005cc03 */ sra $t9,$a1,0x10 /* a4ac: 01d81825 */ or $v1,$t6,$t8 /* a4b0: 332fffff */ andi $t7,$t9,0xffff /* a4b4: 01e47021 */ addu $t6,$t7,$a0 /* a4b8: 01c6001a */ div $zero,$t6,$a2 /* a4bc: 30afffff */ andi $t7,$a1,0xffff /* a4c0: 0000c010 */ mfhi $t8 /* a4c4: 0018cc00 */ sll $t9,$t8,0x10 /* a4c8: ac430030 */ sw $v1,0x30($v0) /* a4cc: ada30000 */ sw $v1,0x0($t5) /* a4d0: 14c00002 */ bnez $a2,.PF0000a4dc /* a4d4: 00000000 */ nop /* a4d8: 0007000d */ break 0x7 .PF0000a4dc: /* a4dc: 2401ffff */ li $at,-1 /* a4e0: 14c10004 */ bne $a2,$at,.PF0000a4f4 /* a4e4: 3c018000 */ lui $at,0x8000 /* a4e8: 15c10002 */ bne $t6,$at,.PF0000a4f4 /* a4ec: 00000000 */ nop /* a4f0: 0006000d */ break 0x6 .PF0000a4f4: /* a4f4: 01e47021 */ addu $t6,$t7,$a0 /* a4f8: 01c6001a */ div $zero,$t6,$a2 /* a4fc: 0000c010 */ mfhi $t8 /* a500: 03381825 */ or $v1,$t9,$t8 /* a504: ac430044 */ sw $v1,0x44($v0) /* a508: afe30000 */ sw $v1,0x0($ra) /* a50c: 3c0f8006 */ lui $t7,0x8006 /* a510: 8defd9b8 */ lw $t7,-0x2648($t7) /* a514: 14c00002 */ bnez $a2,.PF0000a520 /* a518: 00000000 */ nop /* a51c: 0007000d */ break 0x7 .PF0000a520: /* a520: 2401ffff */ li $at,-1 /* a524: 14c10004 */ bne $a2,$at,.PF0000a538 /* a528: 3c018000 */ lui $at,0x8000 /* a52c: 15c10002 */ bne $t6,$at,.PF0000a538 /* a530: 00000000 */ nop /* a534: 0006000d */ break 0x6 .PF0000a538: /* a538: 248e01fa */ addiu $t6,$a0,0x1fa /* a53c: 11e00038 */ beqz $t7,.PF0000a620 /* a540: 00000000 */ nop /* a544: 01c6001a */ div $zero,$t6,$a2 /* a548: 0000c810 */ mfhi $t9 /* a54c: 248f0086 */ addiu $t7,$a0,0x86 /* a550: 14c00002 */ bnez $a2,.PF0000a55c /* a554: 00000000 */ nop /* a558: 0007000d */ break 0x7 .PF0000a55c: /* a55c: 2401ffff */ li $at,-1 /* a560: 14c10004 */ bne $a2,$at,.PF0000a574 /* a564: 3c018000 */ lui $at,0x8000 /* a568: 15c10002 */ bne $t6,$at,.PF0000a574 /* a56c: 00000000 */ nop /* a570: 0006000d */ break 0x6 .PF0000a574: /* a574: 01e6001a */ div $zero,$t7,$a2 /* a578: 00007010 */ mfhi $t6 /* a57c: 0019c400 */ sll $t8,$t9,0x10 /* a580: 249901fc */ addiu $t9,$a0,0x1fc /* a584: 0326001a */ div $zero,$t9,$a2 /* a588: 030e1825 */ or $v1,$t8,$t6 /* a58c: 248e0084 */ addiu $t6,$a0,0x84 /* a590: 14c00002 */ bnez $a2,.PF0000a59c /* a594: 00000000 */ nop /* a598: 0007000d */ break 0x7 .PF0000a59c: /* a59c: 2401ffff */ li $at,-1 /* a5a0: 14c10004 */ bne $a2,$at,.PF0000a5b4 /* a5a4: 3c018000 */ lui $at,0x8000 /* a5a8: 15e10002 */ bne $t7,$at,.PF0000a5b4 /* a5ac: 00000000 */ nop /* a5b0: 0006000d */ break 0x6 .PF0000a5b4: /* a5b4: 00007810 */ mfhi $t7 /* a5b8: ac430030 */ sw $v1,0x30($v0) /* a5bc: ada30000 */ sw $v1,0x0($t5) /* a5c0: 01c6001a */ div $zero,$t6,$a2 /* a5c4: 14c00002 */ bnez $a2,.PF0000a5d0 /* a5c8: 00000000 */ nop /* a5cc: 0007000d */ break 0x7 .PF0000a5d0: /* a5d0: 2401ffff */ li $at,-1 /* a5d4: 14c10004 */ bne $a2,$at,.PF0000a5e8 /* a5d8: 3c018000 */ lui $at,0x8000 /* a5dc: 17210002 */ bne $t9,$at,.PF0000a5e8 /* a5e0: 00000000 */ nop /* a5e4: 0006000d */ break 0x6 .PF0000a5e8: /* a5e8: 0000c810 */ mfhi $t9 /* a5ec: 000fc400 */ sll $t8,$t7,0x10 /* a5f0: 03191825 */ or $v1,$t8,$t9 /* a5f4: ac430044 */ sw $v1,0x44($v0) /* a5f8: afe30000 */ sw $v1,0x0($ra) /* a5fc: 14c00002 */ bnez $a2,.PF0000a608 /* a600: 00000000 */ nop /* a604: 0007000d */ break 0x7 .PF0000a608: /* a608: 2401ffff */ li $at,-1 /* a60c: 14c10004 */ bne $a2,$at,.PF0000a620 /* a610: 3c018000 */ lui $at,0x8000 /* a614: 15c10002 */ bne $t6,$at,.PF0000a620 /* a618: 00000000 */ nop /* a61c: 0006000d */ break 0x6 .PF0000a620: /* a620: 3c018006 */ lui $at,0x8006 /* a624: 002b0821 */ addu $at,$at,$t3 /* a628: 240f0001 */ li $t7,0x1 /* a62c: ac2fcb38 */ sw $t7,-0x34c8($at) /* a630: 10000006 */ b .PF0000a64c /* a634: 8d4ad238 */ lw $t2,-0x2dc8($t2) .PF0000a638: /* a638: 3c018006 */ lui $at,0x8006 /* a63c: 002b0821 */ addu $at,$at,$t3 /* a640: 3c0a8006 */ lui $t2,0x8006 /* a644: 8d4ad238 */ lw $t2,-0x2dc8($t2) /* a648: ac20cb38 */ sw $zero,-0x34c8($at) .PF0000a64c: /* a64c: 258c0001 */ addiu $t4,$t4,0x1 /* a650: 05810004 */ bgez $t4,.PF0000a664 /* a654: 318e0001 */ andi $t6,$t4,0x1 /* a658: 11c00002 */ beqz $t6,.PF0000a664 /* a65c: 00000000 */ nop /* a660: 25cefffe */ addiu $t6,$t6,-2 .PF0000a664: /* a664: 3c018006 */ lui $at,0x8006 /* a668: 11400006 */ beqz $t2,.PF0000a684 /* a66c: ac2ed240 */ sw $t6,-0x2dc0($at) /* a670: 3c198006 */ lui $t9,0x8006 /* a674: 8f39edb8 */ lw $t9,-0x1248($t9) /* a678: 8d380028 */ lw $t8,0x28($t1) /* a67c: 10000006 */ b .PF0000a698 /* a680: af380058 */ sw $t8,0x58($t9) .PF0000a684: /* a684: 3c0f800a */ lui $t7,0x800a /* a688: 3c0e8006 */ lui $t6,0x8006 /* a68c: 8dceedb8 */ lw $t6,-0x1248($t6) /* a690: 8defd020 */ lw $t7,-0x2fe0($t7) /* a694: adcf0058 */ sw $t7,0x58($t6) .PF0000a698: /* a698: 3c028009 */ lui $v0,0x8009 /* a69c: 24422dc6 */ addiu $v0,$v0,0x2dc6 /* a6a0: 90580000 */ lbu $t8,0x0($v0) /* a6a4: 3c048006 */ lui $a0,0x8006 /* a6a8: 8c84d234 */ lw $a0,-0x2dcc($a0) /* a6ac: 27190001 */ addiu $t9,$t8,0x1 /* a6b0: 3c038009 */ lui $v1,0x8009 /* a6b4: 2408002c */ li $t0,0x2c /* a6b8: 24632dc7 */ addiu $v1,$v1,0x2dc7 /* a6bc: 906e0000 */ lbu $t6,0x0($v1) /* a6c0: 3c078006 */ lui $a3,0x8006 /* a6c4: 24e7d1d0 */ addiu $a3,$a3,-11824 /* a6c8: 07210004 */ bgez $t9,.PF0000a6dc /* a6cc: 332f0001 */ andi $t7,$t9,0x1 /* a6d0: 11e00002 */ beqz $t7,.PF0000a6dc /* a6d4: 00000000 */ nop /* a6d8: 25effffe */ addiu $t7,$t7,-2 .PF0000a6dc: /* a6dc: a04f0000 */ sb $t7,0x0($v0) /* a6e0: 904f0000 */ lbu $t7,0x0($v0) /* a6e4: 25d80001 */ addiu $t8,$t6,0x1 /* a6e8: 07010004 */ bgez $t8,.PF0000a6fc /* a6ec: 33190001 */ andi $t9,$t8,0x1 /* a6f0: 13200002 */ beqz $t9,.PF0000a6fc /* a6f4: 00000000 */ nop /* a6f8: 2739fffe */ addiu $t9,$t9,-2 .PF0000a6fc: /* a6fc: 01e80019 */ multu $t7,$t0 /* a700: a0790000 */ sb $t9,0x0($v1) /* a704: 3c018006 */ lui $at,0x8006 /* a708: 3c058006 */ lui $a1,0x8006 /* a70c: 2406002c */ li $a2,0x2c /* a710: 00007012 */ mflo $t6 /* a714: 00eec021 */ addu $t8,$a3,$t6 /* a718: ac38d230 */ sw $t8,-0x2dd0($at) /* a71c: 90790000 */ lbu $t9,0x0($v1) /* a720: 3c018006 */ lui $at,0x8006 /* a724: 03280019 */ multu $t9,$t0 /* a728: 00007812 */ mflo $t7 /* a72c: 00ef7021 */ addu $t6,$a3,$t7 /* a730: ac2ed234 */ sw $t6,-0x2dcc($at) /* a734: 0c0129ec */ jal bcopy /* a738: 8ca5d234 */ lw $a1,-0x2dcc($a1) /* a73c: 3c038009 */ lui $v1,0x8009 /* a740: 24632dc7 */ addiu $v1,$v1,0x2dc7 /* a744: 90780000 */ lbu $t8,0x0($v1) /* a748: 3c0f800a */ lui $t7,0x800a /* a74c: 3c0e8006 */ lui $t6,0x8006 /* a750: 0018c880 */ sll $t9,$t8,0x2 /* a754: 01f97821 */ addu $t7,$t7,$t9 /* a758: 8defd020 */ lw $t7,-0x2fe0($t7) /* a75c: 8dced234 */ lw $t6,-0x2dcc($t6) /* a760: 3c028006 */ lui $v0,0x8006 /* a764: 2442d23c */ addiu $v0,$v0,-11716 /* a768: adcf0028 */ sw $t7,0x28($t6) /* a76c: 8c580000 */ lw $t8,0x0($v0) /* a770: 53000005 */ beqzl $t8,.PF0000a788 /* a774: 8fbf0014 */ lw $ra,0x14($sp) /* a778: ac400000 */ sw $zero,0x0($v0) /* a77c: 0c002779 */ jal viBlack /* a780: 00002025 */ move $a0,$zero /* a784: 8fbf0014 */ lw $ra,0x14($sp) .PF0000a788: /* a788: 27bd0018 */ addiu $sp,$sp,0x18 /* a78c: 03e00008 */ jr $ra /* a790: 00000000 */ nop ); #elif VERSION == VERSION_PAL_BETA GLOBAL_ASM( glabel viUpdateMode /* 9f4c: 3c098006 */ lui $t1,0x8006 /* 9f50: 3c0e8006 */ lui $t6,0x8006 /* 9f54: 8dcedf20 */ lw $t6,-0x20e0($t6) /* 9f58: 8d29df24 */ lw $t1,-0x20dc($t1) /* 9f5c: 27bdffe8 */ addiu $sp,$sp,-24 /* 9f60: afbf0014 */ sw $ra,0x14($sp) /* 9f64: 91cf0000 */ lbu $t7,0x0($t6) /* 9f68: 91220000 */ lbu $v0,0x0($t1) /* 9f6c: 504f0014 */ beql $v0,$t7,.PB00009fc0 /* 9f70: 85380004 */ lh $t8,0x4($t1) /* 9f74: 10400008 */ beqz $v0,.PB00009f98 /* 9f78: 00401825 */ move $v1,$v0 /* 9f7c: 241f0001 */ li $ra,0x1 /* 9f80: 105f000e */ beq $v0,$ra,.PB00009fbc /* 9f84: 24010002 */ li $at,0x2 /* 9f88: 5061000d */ beql $v1,$at,.PB00009fc0 /* 9f8c: 85380004 */ lh $t8,0x4($t1) /* 9f90: 1000000b */ b .PB00009fc0 /* 9f94: 85380004 */ lh $t8,0x4($t1) .PB00009f98: /* 9f98: 3c013f80 */ lui $at,0x3f80 /* 9f9c: 44816000 */ mtc1 $at,$f12 /* 9fa0: 0c01252c */ jal osViSetYScale /* 9fa4: 00000000 */ nop /* 9fa8: 0c0124a8 */ jal osViBlack /* 9fac: 24040001 */ li $a0,0x1 /* 9fb0: 3c098006 */ lui $t1,0x8006 /* 9fb4: 8d29df24 */ lw $t1,-0x20dc($t1) /* 9fb8: 91220000 */ lbu $v0,0x0($t1) .PB00009fbc: /* 9fbc: 85380004 */ lh $t8,0x4($t1) .PB00009fc0: /* 9fc0: 85390018 */ lh $t9,0x18($t1) /* 9fc4: 852e0006 */ lh $t6,0x6($t1) /* 9fc8: 44982000 */ mtc1 $t8,$f4 /* 9fcc: 852f001a */ lh $t7,0x1a($t1) /* 9fd0: 44994000 */ mtc1 $t9,$f8 /* 9fd4: 468021a0 */ cvt.s.w $f6,$f4 /* 9fd8: 448e8000 */ mtc1 $t6,$f16 /* 9fdc: 448f2000 */ mtc1 $t7,$f4 /* 9fe0: 3c0d8009 */ lui $t5,0x8009 /* 9fe4: 241f0001 */ li $ra,0x1 /* 9fe8: 468042a0 */ cvt.s.w $f10,$f8 /* 9fec: 3c0c8006 */ lui $t4,0x8006 /* 9ff0: 3c013f80 */ lui $at,0x3f80 /* 9ff4: 25ad02ec */ addiu $t5,$t5,0x2ec /* 9ff8: 468084a0 */ cvt.s.w $f18,$f16 /* 9ffc: 46802220 */ cvt.s.w $f8,$f4 /* a000: 460a3083 */ div.s $f2,$f6,$f10 /* a004: 14400003 */ bnez $v0,.PB0000a014 /* a008: 46089003 */ div.s $f0,$f18,$f8 /* a00c: 44810000 */ mtc1 $at,$f0 /* a010: 00000000 */ nop .PB0000a014: /* a014: 8d8cdf30 */ lw $t4,-0x20d0($t4) /* a018: 3c018006 */ lui $at,0x8006 /* a01c: 000c5880 */ sll $t3,$t4,0x2 /* a020: 002b0821 */ addu $at,$at,$t3 /* a024: e422d818 */ swc1 $f2,-0x27e8($at) /* a028: 3c018006 */ lui $at,0x8006 /* a02c: 002b0821 */ addu $at,$at,$t3 /* a030: e420d820 */ swc1 $f0,-0x27e0($at) /* a034: 91220000 */ lbu $v0,0x0($t1) /* a038: 57e200a3 */ bnel $ra,$v0,.PB0000a2c8 /* a03c: 24010002 */ li $at,0x2 /* a040: 3c0a8006 */ lui $t2,0x8006 /* a044: 8d4adf28 */ lw $t2,-0x20d8($t2) /* a048: 3c1f8009 */ lui $ra,0x8009 /* a04c: 000c7880 */ sll $t7,$t4,0x2 /* a050: 11400019 */ beqz $t2,.PB0000a0b8 /* a054: 27ff02f0 */ addiu $ra,$ra,0x2f0 /* a058: 000cc080 */ sll $t8,$t4,0x2 /* a05c: 030cc021 */ addu $t8,$t8,$t4 /* a060: 3c198009 */ lui $t9,0x8009 /* a064: 273901a0 */ addiu $t9,$t9,0x1a0 /* a068: 0018c100 */ sll $t8,$t8,0x4 /* a06c: 03191021 */ addu $v0,$t8,$t9 /* a070: 3c0e8006 */ lui $t6,0x8006 /* a074: 25ce12b0 */ addiu $t6,$t6,0x12b0 /* a078: 25d80048 */ addiu $t8,$t6,0x48 /* a07c: 0040c825 */ move $t9,$v0 .PB0000a080: /* a080: 8dc10000 */ lw $at,0x0($t6) /* a084: 25ce000c */ addiu $t6,$t6,0xc /* a088: 2739000c */ addiu $t9,$t9,0xc /* a08c: af21fff4 */ sw $at,-0xc($t9) /* a090: 8dc1fff8 */ lw $at,-0x8($t6) /* a094: af21fff8 */ sw $at,-0x8($t9) /* a098: 8dc1fffc */ lw $at,-0x4($t6) /* a09c: 15d8fff8 */ bne $t6,$t8,.PB0000a080 /* a0a0: af21fffc */ sw $at,-0x4($t9) /* a0a4: 8dc10000 */ lw $at,0x0($t6) /* a0a8: af210000 */ sw $at,0x0($t9) /* a0ac: 8dd80004 */ lw $t8,0x4($t6) /* a0b0: 10000017 */ b .PB0000a110 /* a0b4: af380004 */ sw $t8,0x4($t9) .PB0000a0b8: /* a0b8: 01ec7821 */ addu $t7,$t7,$t4 /* a0bc: 3c188009 */ lui $t8,0x8009 /* a0c0: 271801a0 */ addiu $t8,$t8,0x1a0 /* a0c4: 000f7900 */ sll $t7,$t7,0x4 /* a0c8: 01f81021 */ addu $v0,$t7,$t8 /* a0cc: 3c0e8006 */ lui $t6,0x8006 /* a0d0: 25ce13f0 */ addiu $t6,$t6,0x13f0 /* a0d4: 25cf0048 */ addiu $t7,$t6,0x48 /* a0d8: 0040c025 */ move $t8,$v0 .PB0000a0dc: /* a0dc: 8dc10000 */ lw $at,0x0($t6) /* a0e0: 25ce000c */ addiu $t6,$t6,0xc /* a0e4: 2718000c */ addiu $t8,$t8,0xc /* a0e8: af01fff4 */ sw $at,-0xc($t8) /* a0ec: 8dc1fff8 */ lw $at,-0x8($t6) /* a0f0: af01fff8 */ sw $at,-0x8($t8) /* a0f4: 8dc1fffc */ lw $at,-0x4($t6) /* a0f8: 15cffff8 */ bne $t6,$t7,.PB0000a0dc /* a0fc: af01fffc */ sw $at,-0x4($t8) /* a100: 8dc10000 */ lw $at,0x0($t6) /* a104: af010000 */ sw $at,0x0($t8) /* a108: 8dcf0004 */ lw $t7,0x4($t6) /* a10c: af0f0004 */ sw $t7,0x4($t8) .PB0000a110: /* a110: 85390018 */ lh $t9,0x18($t1) /* a114: 24010280 */ li $at,0x280 /* a118: 24080400 */ li $t0,0x400 /* a11c: ac590008 */ sw $t9,0x8($v0) /* a120: 852f0018 */ lh $t7,0x18($t1) /* a124: 8c44001c */ lw $a0,0x1c($v0) /* a128: 3c078006 */ lui $a3,0x8006 /* a12c: 000f7280 */ sll $t6,$t7,0xa /* a130: 01c1001a */ div $zero,$t6,$at /* a134: 0000c012 */ mflo $t8 /* a138: ac580020 */ sw $t8,0x20($v0) /* a13c: 85390018 */ lh $t9,0x18($t1) /* a140: 3406ffff */ li $a2,0xffff /* a144: 00197840 */ sll $t7,$t9,0x1 /* a148: ac4f0028 */ sw $t7,0x28($v0) /* a14c: 852e0018 */ lh $t6,0x18($t1) /* a150: ac48002c */ sw $t0,0x2c($v0) /* a154: ac480040 */ sw $t0,0x40($v0) /* a158: 000ec040 */ sll $t8,$t6,0x1 /* a15c: ac58003c */ sw $t8,0x3c($v0) /* a160: 8ce7df18 */ lw $a3,-0x20e8($a3) /* a164: 0004cc03 */ sra $t9,$a0,0x10 /* a168: 332fffff */ andi $t7,$t9,0xffff /* a16c: 01e77021 */ addu $t6,$t7,$a3 /* a170: 01c6001a */ div $zero,$t6,$a2 /* a174: 14c00002 */ bnez $a2,.PB0000a180 /* a178: 00000000 */ nop /* a17c: 0007000d */ break 0x7 .PB0000a180: /* a180: 2401ffff */ li $at,-1 /* a184: 14c10004 */ bne $a2,$at,.PB0000a198 /* a188: 3c018000 */ lui $at,0x8000 /* a18c: 15c10002 */ bne $t6,$at,.PB0000a198 /* a190: 00000000 */ nop /* a194: 0006000d */ break 0x6 .PB0000a198: /* a198: 308fffff */ andi $t7,$a0,0xffff /* a19c: 0000c010 */ mfhi $t8 /* a1a0: 01e77021 */ addu $t6,$t7,$a3 /* a1a4: 0018cc00 */ sll $t9,$t8,0x10 /* a1a8: 01c6001a */ div $zero,$t6,$a2 /* a1ac: 14c00002 */ bnez $a2,.PB0000a1b8 /* a1b0: 00000000 */ nop /* a1b4: 0007000d */ break 0x7 .PB0000a1b8: /* a1b8: 2401ffff */ li $at,-1 /* a1bc: 14c10004 */ bne $a2,$at,.PB0000a1d0 /* a1c0: 3c018000 */ lui $at,0x8000 /* a1c4: 15c10002 */ bne $t6,$at,.PB0000a1d0 /* a1c8: 00000000 */ nop /* a1cc: 0006000d */ break 0x6 .PB0000a1d0: /* a1d0: 0000c010 */ mfhi $t8 /* a1d4: 03381825 */ or $v1,$t9,$t8 /* a1d8: ac43001c */ sw $v1,0x1c($v0) /* a1dc: 3c018009 */ lui $at,0x8009 /* a1e0: ac2302e8 */ sw $v1,0x2e8($at) /* a1e4: 8525001a */ lh $a1,0x1a($t1) /* a1e8: 24180140 */ li $t8,0x140 /* a1ec: 3c048006 */ lui $a0,0x8006 /* a1f0: 00057a80 */ sll $t7,$a1,0xa /* a1f4: 000f7282 */ srl $t6,$t7,0xa /* a1f8: 29c1012d */ slti $at,$t6,0x12d /* a1fc: 14200002 */ bnez $at,.PB0000a208 /* a200: 01c02825 */ move $a1,$t6 /* a204: 000e2843 */ sra $a1,$t6,0x1 .PB0000a208: /* a208: 03053823 */ subu $a3,$t8,$a1 /* a20c: 24ef0002 */ addiu $t7,$a3,0x2 /* a210: 24b9fffe */ addiu $t9,$a1,-2 /* a214: 0019c040 */ sll $t8,$t9,0x1 /* a218: 000f7400 */ sll $t6,$t7,0x10 /* a21c: 00f87821 */ addu $t7,$a3,$t8 /* a220: 25f90002 */ addiu $t9,$t7,0x2 /* a224: 8c84df1c */ lw $a0,-0x20e4($a0) /* a228: 01d94025 */ or $t0,$t6,$t9 /* a22c: 0008c403 */ sra $t8,$t0,0x10 /* a230: 330fffff */ andi $t7,$t8,0xffff /* a234: 01e47021 */ addu $t6,$t7,$a0 /* a238: 01c6001a */ div $zero,$t6,$a2 /* a23c: 14c00002 */ bnez $a2,.PB0000a248 /* a240: 00000000 */ nop /* a244: 0007000d */ break 0x7 .PB0000a248: /* a248: 2401ffff */ li $at,-1 /* a24c: 14c10004 */ bne $a2,$at,.PB0000a260 /* a250: 3c018000 */ lui $at,0x8000 /* a254: 15c10002 */ bne $t6,$at,.PB0000a260 /* a258: 00000000 */ nop /* a25c: 0006000d */ break 0x6 .PB0000a260: /* a260: 310fffff */ andi $t7,$t0,0xffff /* a264: 01e47021 */ addu $t6,$t7,$a0 /* a268: 0000c810 */ mfhi $t9 /* a26c: 0019c400 */ sll $t8,$t9,0x10 /* a270: 240f0001 */ li $t7,0x1 /* a274: 01c6001a */ div $zero,$t6,$a2 /* a278: 14c00002 */ bnez $a2,.PB0000a284 /* a27c: 00000000 */ nop /* a280: 0007000d */ break 0x7 .PB0000a284: /* a284: 2401ffff */ li $at,-1 /* a288: 14c10004 */ bne $a2,$at,.PB0000a29c /* a28c: 3c018000 */ lui $at,0x8000 /* a290: 15c10002 */ bne $t6,$at,.PB0000a29c /* a294: 00000000 */ nop /* a298: 0006000d */ break 0x6 .PB0000a29c: /* a29c: 0000c810 */ mfhi $t9 /* a2a0: 03191825 */ or $v1,$t8,$t9 /* a2a4: 3c018006 */ lui $at,0x8006 /* a2a8: ac430030 */ sw $v1,0x30($v0) /* a2ac: ada30000 */ sw $v1,0x0($t5) /* a2b0: ac430044 */ sw $v1,0x44($v0) /* a2b4: afe30000 */ sw $v1,0x0($ra) /* a2b8: 002b0821 */ addu $at,$at,$t3 /* a2bc: 100000dd */ b .PB0000a634 /* a2c0: ac2fd828 */ sw $t7,-0x27d8($at) /* a2c4: 24010002 */ li $at,0x2 .PB0000a2c8: /* a2c8: 144100d5 */ bne $v0,$at,.PB0000a620 /* a2cc: 000c7080 */ sll $t6,$t4,0x2 /* a2d0: 01cc7021 */ addu $t6,$t6,$t4 /* a2d4: 3c188009 */ lui $t8,0x8009 /* a2d8: 271801a0 */ addiu $t8,$t8,0x1a0 /* a2dc: 000e7100 */ sll $t6,$t6,0x4 /* a2e0: 01d81021 */ addu $v0,$t6,$t8 /* a2e4: 3c198006 */ lui $t9,0x8006 /* a2e8: 3c0d8009 */ lui $t5,0x8009 /* a2ec: 27391580 */ addiu $t9,$t9,0x1580 /* a2f0: 25ad02ec */ addiu $t5,$t5,0x2ec /* a2f4: 3406ffff */ li $a2,0xffff /* a2f8: 24080800 */ li $t0,0x800 /* a2fc: 272e0048 */ addiu $t6,$t9,0x48 /* a300: 0040c025 */ move $t8,$v0 .PB0000a304: /* a304: 8f210000 */ lw $at,0x0($t9) /* a308: 2739000c */ addiu $t9,$t9,0xc /* a30c: 2718000c */ addiu $t8,$t8,0xc /* a310: af01fff4 */ sw $at,-0xc($t8) /* a314: 8f21fff8 */ lw $at,-0x8($t9) /* a318: af01fff8 */ sw $at,-0x8($t8) /* a31c: 8f21fffc */ lw $at,-0x4($t9) /* a320: 172efff8 */ bne $t9,$t6,.PB0000a304 /* a324: af01fffc */ sw $at,-0x4($t8) /* a328: 8f210000 */ lw $at,0x0($t9) /* a32c: 3c078006 */ lui $a3,0x8006 /* a330: 3c048006 */ lui $a0,0x8006 /* a334: af010000 */ sw $at,0x0($t8) /* a338: 8f2e0004 */ lw $t6,0x4($t9) /* a33c: 24010280 */ li $at,0x280 /* a340: 3c1f8009 */ lui $ra,0x8009 /* a344: af0e0004 */ sw $t6,0x4($t8) /* a348: 852f0018 */ lh $t7,0x18($t1) /* a34c: 8c45001c */ lw $a1,0x1c($v0) /* a350: 27ff02f0 */ addiu $ra,$ra,0x2f0 /* a354: ac4f0008 */ sw $t7,0x8($v0) /* a358: 852e0018 */ lh $t6,0x18($t1) /* a35c: ac48002c */ sw $t0,0x2c($v0) /* a360: ac480040 */ sw $t0,0x40($v0) /* a364: 000eca80 */ sll $t9,$t6,0xa /* a368: 0321001a */ div $zero,$t9,$at /* a36c: 0000c012 */ mflo $t8 /* a370: ac580020 */ sw $t8,0x20($v0) /* a374: 852f0018 */ lh $t7,0x18($t1) /* a378: 3c0a8006 */ lui $t2,0x8006 /* a37c: 000f7040 */ sll $t6,$t7,0x1 /* a380: ac4e0028 */ sw $t6,0x28($v0) /* a384: 85390018 */ lh $t9,0x18($t1) /* a388: 00057c03 */ sra $t7,$a1,0x10 /* a38c: 31eeffff */ andi $t6,$t7,0xffff /* a390: 0019c080 */ sll $t8,$t9,0x2 /* a394: ac58003c */ sw $t8,0x3c($v0) /* a398: 8ce7df18 */ lw $a3,-0x20e8($a3) /* a39c: 01c7c821 */ addu $t9,$t6,$a3 /* a3a0: 0326001a */ div $zero,$t9,$a2 /* a3a4: 14c00002 */ bnez $a2,.PB0000a3b0 /* a3a8: 00000000 */ nop /* a3ac: 0007000d */ break 0x7 .PB0000a3b0: /* a3b0: 2401ffff */ li $at,-1 /* a3b4: 14c10004 */ bne $a2,$at,.PB0000a3c8 /* a3b8: 3c018000 */ lui $at,0x8000 /* a3bc: 17210002 */ bne $t9,$at,.PB0000a3c8 /* a3c0: 00000000 */ nop /* a3c4: 0006000d */ break 0x6 .PB0000a3c8: /* a3c8: 30aeffff */ andi $t6,$a1,0xffff /* a3cc: 0000c010 */ mfhi $t8 /* a3d0: 01c7c821 */ addu $t9,$t6,$a3 /* a3d4: 00187c00 */ sll $t7,$t8,0x10 /* a3d8: 0326001a */ div $zero,$t9,$a2 /* a3dc: 14c00002 */ bnez $a2,.PB0000a3e8 /* a3e0: 00000000 */ nop /* a3e4: 0007000d */ break 0x7 .PB0000a3e8: /* a3e8: 2401ffff */ li $at,-1 /* a3ec: 14c10004 */ bne $a2,$at,.PB0000a400 /* a3f0: 3c018000 */ lui $at,0x8000 /* a3f4: 17210002 */ bne $t9,$at,.PB0000a400 /* a3f8: 00000000 */ nop /* a3fc: 0006000d */ break 0x6 .PB0000a400: /* a400: 0000c010 */ mfhi $t8 /* a404: 01f81825 */ or $v1,$t7,$t8 /* a408: ac43001c */ sw $v1,0x1c($v0) /* a40c: 3c018009 */ lui $at,0x8009 /* a410: ac2302e8 */ sw $v1,0x2e8($at) /* a414: 8c450030 */ lw $a1,0x30($v0) /* a418: 8c84df1c */ lw $a0,-0x20e4($a0) /* a41c: 00057403 */ sra $t6,$a1,0x10 /* a420: 31d9ffff */ andi $t9,$t6,0xffff /* a424: 03247821 */ addu $t7,$t9,$a0 /* a428: 01e6001a */ div $zero,$t7,$a2 /* a42c: 14c00002 */ bnez $a2,.PB0000a438 /* a430: 00000000 */ nop /* a434: 0007000d */ break 0x7 .PB0000a438: /* a438: 2401ffff */ li $at,-1 /* a43c: 14c10004 */ bne $a2,$at,.PB0000a450 /* a440: 3c018000 */ lui $at,0x8000 /* a444: 15e10002 */ bne $t7,$at,.PB0000a450 /* a448: 00000000 */ nop /* a44c: 0006000d */ break 0x6 .PB0000a450: /* a450: 30b9ffff */ andi $t9,$a1,0xffff /* a454: 03247821 */ addu $t7,$t9,$a0 /* a458: 0000c010 */ mfhi $t8 /* a45c: 8c450044 */ lw $a1,0x44($v0) /* a460: 00187400 */ sll $t6,$t8,0x10 /* a464: 01e6001a */ div $zero,$t7,$a2 /* a468: 14c00002 */ bnez $a2,.PB0000a474 /* a46c: 00000000 */ nop /* a470: 0007000d */ break 0x7 .PB0000a474: /* a474: 2401ffff */ li $at,-1 /* a478: 14c10004 */ bne $a2,$at,.PB0000a48c /* a47c: 3c018000 */ lui $at,0x8000 /* a480: 15e10002 */ bne $t7,$at,.PB0000a48c /* a484: 00000000 */ nop /* a488: 0006000d */ break 0x6 .PB0000a48c: /* a48c: 0000c010 */ mfhi $t8 /* a490: 0005cc03 */ sra $t9,$a1,0x10 /* a494: 01d81825 */ or $v1,$t6,$t8 /* a498: 332fffff */ andi $t7,$t9,0xffff /* a49c: 01e47021 */ addu $t6,$t7,$a0 /* a4a0: 01c6001a */ div $zero,$t6,$a2 /* a4a4: 30afffff */ andi $t7,$a1,0xffff /* a4a8: 0000c010 */ mfhi $t8 /* a4ac: 0018cc00 */ sll $t9,$t8,0x10 /* a4b0: ac430030 */ sw $v1,0x30($v0) /* a4b4: ada30000 */ sw $v1,0x0($t5) /* a4b8: 14c00002 */ bnez $a2,.PB0000a4c4 /* a4bc: 00000000 */ nop /* a4c0: 0007000d */ break 0x7 .PB0000a4c4: /* a4c4: 2401ffff */ li $at,-1 /* a4c8: 14c10004 */ bne $a2,$at,.PB0000a4dc /* a4cc: 3c018000 */ lui $at,0x8000 /* a4d0: 15c10002 */ bne $t6,$at,.PB0000a4dc /* a4d4: 00000000 */ nop /* a4d8: 0006000d */ break 0x6 .PB0000a4dc: /* a4dc: 01e47021 */ addu $t6,$t7,$a0 /* a4e0: 01c6001a */ div $zero,$t6,$a2 /* a4e4: 0000c010 */ mfhi $t8 /* a4e8: 03381825 */ or $v1,$t9,$t8 /* a4ec: ac430044 */ sw $v1,0x44($v0) /* a4f0: afe30000 */ sw $v1,0x0($ra) /* a4f4: 3c0f8006 */ lui $t7,0x8006 /* a4f8: 8defe828 */ lw $t7,-0x17d8($t7) /* a4fc: 14c00002 */ bnez $a2,.PB0000a508 /* a500: 00000000 */ nop /* a504: 0007000d */ break 0x7 .PB0000a508: /* a508: 2401ffff */ li $at,-1 /* a50c: 14c10004 */ bne $a2,$at,.PB0000a520 /* a510: 3c018000 */ lui $at,0x8000 /* a514: 15c10002 */ bne $t6,$at,.PB0000a520 /* a518: 00000000 */ nop /* a51c: 0006000d */ break 0x6 .PB0000a520: /* a520: 248e01fa */ addiu $t6,$a0,0x1fa /* a524: 11e00038 */ beqz $t7,.PB0000a608 /* a528: 00000000 */ nop /* a52c: 01c6001a */ div $zero,$t6,$a2 /* a530: 0000c810 */ mfhi $t9 /* a534: 248f0086 */ addiu $t7,$a0,0x86 /* a538: 14c00002 */ bnez $a2,.PB0000a544 /* a53c: 00000000 */ nop /* a540: 0007000d */ break 0x7 .PB0000a544: /* a544: 2401ffff */ li $at,-1 /* a548: 14c10004 */ bne $a2,$at,.PB0000a55c /* a54c: 3c018000 */ lui $at,0x8000 /* a550: 15c10002 */ bne $t6,$at,.PB0000a55c /* a554: 00000000 */ nop /* a558: 0006000d */ break 0x6 .PB0000a55c: /* a55c: 01e6001a */ div $zero,$t7,$a2 /* a560: 00007010 */ mfhi $t6 /* a564: 0019c400 */ sll $t8,$t9,0x10 /* a568: 249901fc */ addiu $t9,$a0,0x1fc /* a56c: 0326001a */ div $zero,$t9,$a2 /* a570: 030e1825 */ or $v1,$t8,$t6 /* a574: 248e0084 */ addiu $t6,$a0,0x84 /* a578: 14c00002 */ bnez $a2,.PB0000a584 /* a57c: 00000000 */ nop /* a580: 0007000d */ break 0x7 .PB0000a584: /* a584: 2401ffff */ li $at,-1 /* a588: 14c10004 */ bne $a2,$at,.PB0000a59c /* a58c: 3c018000 */ lui $at,0x8000 /* a590: 15e10002 */ bne $t7,$at,.PB0000a59c /* a594: 00000000 */ nop /* a598: 0006000d */ break 0x6 .PB0000a59c: /* a59c: 00007810 */ mfhi $t7 /* a5a0: ac430030 */ sw $v1,0x30($v0) /* a5a4: ada30000 */ sw $v1,0x0($t5) /* a5a8: 01c6001a */ div $zero,$t6,$a2 /* a5ac: 14c00002 */ bnez $a2,.PB0000a5b8 /* a5b0: 00000000 */ nop /* a5b4: 0007000d */ break 0x7 .PB0000a5b8: /* a5b8: 2401ffff */ li $at,-1 /* a5bc: 14c10004 */ bne $a2,$at,.PB0000a5d0 /* a5c0: 3c018000 */ lui $at,0x8000 /* a5c4: 17210002 */ bne $t9,$at,.PB0000a5d0 /* a5c8: 00000000 */ nop /* a5cc: 0006000d */ break 0x6 .PB0000a5d0: /* a5d0: 0000c810 */ mfhi $t9 /* a5d4: 000fc400 */ sll $t8,$t7,0x10 /* a5d8: 03191825 */ or $v1,$t8,$t9 /* a5dc: ac430044 */ sw $v1,0x44($v0) /* a5e0: afe30000 */ sw $v1,0x0($ra) /* a5e4: 14c00002 */ bnez $a2,.PB0000a5f0 /* a5e8: 00000000 */ nop /* a5ec: 0007000d */ break 0x7 .PB0000a5f0: /* a5f0: 2401ffff */ li $at,-1 /* a5f4: 14c10004 */ bne $a2,$at,.PB0000a608 /* a5f8: 3c018000 */ lui $at,0x8000 /* a5fc: 15c10002 */ bne $t6,$at,.PB0000a608 /* a600: 00000000 */ nop /* a604: 0006000d */ break 0x6 .PB0000a608: /* a608: 3c018006 */ lui $at,0x8006 /* a60c: 002b0821 */ addu $at,$at,$t3 /* a610: 240f0001 */ li $t7,0x1 /* a614: ac2fd828 */ sw $t7,-0x27d8($at) /* a618: 10000006 */ b .PB0000a634 /* a61c: 8d4adf28 */ lw $t2,-0x20d8($t2) .PB0000a620: /* a620: 3c018006 */ lui $at,0x8006 /* a624: 002b0821 */ addu $at,$at,$t3 /* a628: 3c0a8006 */ lui $t2,0x8006 /* a62c: 8d4adf28 */ lw $t2,-0x20d8($t2) /* a630: ac20d828 */ sw $zero,-0x27d8($at) .PB0000a634: /* a634: 258c0001 */ addiu $t4,$t4,0x1 /* a638: 05810004 */ bgez $t4,.PB0000a64c /* a63c: 318e0001 */ andi $t6,$t4,0x1 /* a640: 11c00002 */ beqz $t6,.PB0000a64c /* a644: 00000000 */ nop /* a648: 25cefffe */ addiu $t6,$t6,-2 .PB0000a64c: /* a64c: 3c018006 */ lui $at,0x8006 /* a650: 11400006 */ beqz $t2,.PB0000a66c /* a654: ac2edf30 */ sw $t6,-0x20d0($at) /* a658: 3c198006 */ lui $t9,0x8006 /* a65c: 8f3907a8 */ lw $t9,0x7a8($t9) /* a660: 8d380028 */ lw $t8,0x28($t1) /* a664: 10000006 */ b .PB0000a680 /* a668: af380058 */ sw $t8,0x58($t9) .PB0000a66c: /* a66c: 3c0f800a */ lui $t7,0x800a /* a670: 3c0e8006 */ lui $t6,0x8006 /* a674: 8dce07a8 */ lw $t6,0x7a8($t6) /* a678: 8def0fe0 */ lw $t7,0xfe0($t7) /* a67c: adcf0058 */ sw $t7,0x58($t6) .PB0000a680: /* a680: 3c028009 */ lui $v0,0x8009 /* a684: 24424d56 */ addiu $v0,$v0,0x4d56 /* a688: 90580000 */ lbu $t8,0x0($v0) /* a68c: 3c048006 */ lui $a0,0x8006 /* a690: 8c84df24 */ lw $a0,-0x20dc($a0) /* a694: 27190001 */ addiu $t9,$t8,0x1 /* a698: 3c038009 */ lui $v1,0x8009 /* a69c: 2408002c */ li $t0,0x2c /* a6a0: 24634d57 */ addiu $v1,$v1,0x4d57 /* a6a4: 906e0000 */ lbu $t6,0x0($v1) /* a6a8: 3c078006 */ lui $a3,0x8006 /* a6ac: 24e7dec0 */ addiu $a3,$a3,-8512 /* a6b0: 07210004 */ bgez $t9,.PB0000a6c4 /* a6b4: 332f0001 */ andi $t7,$t9,0x1 /* a6b8: 11e00002 */ beqz $t7,.PB0000a6c4 /* a6bc: 00000000 */ nop /* a6c0: 25effffe */ addiu $t7,$t7,-2 .PB0000a6c4: /* a6c4: a04f0000 */ sb $t7,0x0($v0) /* a6c8: 904f0000 */ lbu $t7,0x0($v0) /* a6cc: 25d80001 */ addiu $t8,$t6,0x1 /* a6d0: 07010004 */ bgez $t8,.PB0000a6e4 /* a6d4: 33190001 */ andi $t9,$t8,0x1 /* a6d8: 13200002 */ beqz $t9,.PB0000a6e4 /* a6dc: 00000000 */ nop /* a6e0: 2739fffe */ addiu $t9,$t9,-2 .PB0000a6e4: /* a6e4: 01e80019 */ multu $t7,$t0 /* a6e8: a0790000 */ sb $t9,0x0($v1) /* a6ec: 3c018006 */ lui $at,0x8006 /* a6f0: 3c058006 */ lui $a1,0x8006 /* a6f4: 2406002c */ li $a2,0x2c /* a6f8: 00007012 */ mflo $t6 /* a6fc: 00eec021 */ addu $t8,$a3,$t6 /* a700: ac38df20 */ sw $t8,-0x20e0($at) /* a704: 90790000 */ lbu $t9,0x0($v1) /* a708: 3c018006 */ lui $at,0x8006 /* a70c: 03280019 */ multu $t9,$t0 /* a710: 00007812 */ mflo $t7 /* a714: 00ef7021 */ addu $t6,$a3,$t7 /* a718: ac2edf24 */ sw $t6,-0x20dc($at) /* a71c: 0c012d1c */ jal bcopy /* a720: 8ca5df24 */ lw $a1,-0x20dc($a1) /* a724: 3c038009 */ lui $v1,0x8009 /* a728: 24634d57 */ addiu $v1,$v1,0x4d57 /* a72c: 90780000 */ lbu $t8,0x0($v1) /* a730: 3c0f800a */ lui $t7,0x800a /* a734: 3c0e8006 */ lui $t6,0x8006 /* a738: 0018c880 */ sll $t9,$t8,0x2 /* a73c: 01f97821 */ addu $t7,$t7,$t9 /* a740: 8def0fe0 */ lw $t7,0xfe0($t7) /* a744: 8dcedf24 */ lw $t6,-0x20dc($t6) /* a748: 3c028006 */ lui $v0,0x8006 /* a74c: 2442df2c */ addiu $v0,$v0,-8404 /* a750: adcf0028 */ sw $t7,0x28($t6) /* a754: 8c580000 */ lw $t8,0x0($v0) /* a758: 53000005 */ beqzl $t8,.PB0000a770 /* a75c: 8fbf0014 */ lw $ra,0x14($sp) /* a760: ac400000 */ sw $zero,0x0($v0) /* a764: 0c002773 */ jal viBlack /* a768: 00002025 */ move $a0,$zero /* a76c: 8fbf0014 */ lw $ra,0x14($sp) .PB0000a770: /* a770: 27bd0018 */ addiu $sp,$sp,0x18 /* a774: 03e00008 */ jr $ra /* a778: 00000000 */ nop ); #else GLOBAL_ASM( glabel viUpdateMode /* a044: 3c098006 */ lui $t1,%hi(g_ViBackData) /* a048: 3c0e8006 */ lui $t6,%hi(g_ViFrontData) /* a04c: 8dced590 */ lw $t6,%lo(g_ViFrontData)($t6) /* a050: 8d29d594 */ lw $t1,%lo(g_ViBackData)($t1) /* a054: 27bdffe8 */ addiu $sp,$sp,-24 /* a058: afbf0014 */ sw $ra,0x14($sp) /* a05c: 91cf0000 */ lbu $t7,0x0($t6) /* a060: 91230000 */ lbu $v1,0x0($t1) /* a064: 506f0014 */ beql $v1,$t7,.L0000a0b8 /* a068: 85380004 */ lh $t8,0x4($t1) /* a06c: 10600008 */ beqz $v1,.L0000a090 /* a070: 00601025 */ or $v0,$v1,$zero /* a074: 241f0001 */ addiu $ra,$zero,0x1 /* a078: 107f000e */ beq $v1,$ra,.L0000a0b4 /* a07c: 24040002 */ addiu $a0,$zero,0x2 /* a080: 5044000d */ beql $v0,$a0,.L0000a0b8 /* a084: 85380004 */ lh $t8,0x4($t1) /* a088: 1000000b */ b .L0000a0b8 /* a08c: 85380004 */ lh $t8,0x4($t1) .L0000a090: /* a090: 3c013f80 */ lui $at,0x3f80 /* a094: 44816000 */ mtc1 $at,$f12 /* a098: 0c0123bc */ jal osViSetYScale /* a09c: 00000000 */ nop /* a0a0: 0c012338 */ jal osViBlack /* a0a4: 24040001 */ addiu $a0,$zero,0x1 /* a0a8: 3c098006 */ lui $t1,%hi(g_ViBackData) /* a0ac: 8d29d594 */ lw $t1,%lo(g_ViBackData)($t1) /* a0b0: 91230000 */ lbu $v1,0x0($t1) .L0000a0b4: /* a0b4: 85380004 */ lh $t8,0x4($t1) .L0000a0b8: /* a0b8: 85390018 */ lh $t9,0x18($t1) /* a0bc: 852e0006 */ lh $t6,0x6($t1) /* a0c0: 44982000 */ mtc1 $t8,$f4 /* a0c4: 852f001a */ lh $t7,0x1a($t1) /* a0c8: 44994000 */ mtc1 $t9,$f8 /* a0cc: 468021a0 */ cvt.s.w $f6,$f4 /* a0d0: 448e8000 */ mtc1 $t6,$f16 /* a0d4: 448f2000 */ mtc1 $t7,$f4 /* a0d8: 24040002 */ addiu $a0,$zero,0x2 /* a0dc: 241f0001 */ addiu $ra,$zero,0x1 /* a0e0: 468042a0 */ cvt.s.w $f10,$f8 /* a0e4: 3c0b8006 */ lui $t3,%hi(g_ViSlot) /* a0e8: 3c013f80 */ lui $at,0x3f80 /* a0ec: 468084a0 */ cvt.s.w $f18,$f16 /* a0f0: 46802220 */ cvt.s.w $f8,$f4 /* a0f4: 460a3083 */ div.s $f2,$f6,$f10 /* a0f8: 14600003 */ bnez $v1,.L0000a108 /* a0fc: 46089003 */ div.s $f0,$f18,$f8 /* a100: 44810000 */ mtc1 $at,$f0 /* a104: 00000000 */ nop .L0000a108: /* a108: 8d6bd5a0 */ lw $t3,%lo(g_ViSlot)($t3) /* a10c: 3c018006 */ lui $at,%hi(g_ViXScalesBySlot) /* a110: 000b6080 */ sll $t4,$t3,0x2 /* a114: 002c0821 */ addu $at,$at,$t4 /* a118: e422ce78 */ swc1 $f2,%lo(g_ViXScalesBySlot)($at) /* a11c: 3c018006 */ lui $at,%hi(g_ViYScalesBySlot) /* a120: 002c0821 */ addu $at,$at,$t4 /* a124: e420ce80 */ swc1 $f0,%lo(g_ViYScalesBySlot)($at) /* a128: 91230000 */ lbu $v1,0x0($t1) /* a12c: 17e30101 */ bne $ra,$v1,.L0000a534 /* a130: 00000000 */ nop /* a134: 3c0a8006 */ lui $t2,%hi(g_ViIs16Bit) /* a138: 8d4ad598 */ lw $t2,%lo(g_ViIs16Bit)($t2) /* a13c: 3c188000 */ lui $t8,0x8000 /* a140: 11400033 */ beqz $t2,.L0000a210 /* a144: 00000000 */ nop /* a148: 8f180300 */ lw $t8,0x300($t8) /* a14c: 3c198009 */ lui $t9,%hi(var8008dcc0) /* a150: 2739dcc0 */ addiu $t9,$t9,%lo(var8008dcc0) /* a154: 14980019 */ bne $a0,$t8,.L0000a1bc /* a158: 3c0f8006 */ lui $t7,%hi(osViModeTable+0xa0) /* a15c: 000bc880 */ sll $t9,$t3,0x2 /* a160: 032bc821 */ addu $t9,$t9,$t3 /* a164: 3c0e8009 */ lui $t6,%hi(var8008dcc0) /* a168: 25cedcc0 */ addiu $t6,$t6,%lo(var8008dcc0) /* a16c: 0019c900 */ sll $t9,$t9,0x4 /* a170: 032e2021 */ addu $a0,$t9,$t6 /* a174: 3c0f8006 */ lui $t7,%hi(osViModeTable+0x960) /* a178: 25ef0070 */ addiu $t7,$t7,%lo(osViModeTable+0x960) /* a17c: 25f90048 */ addiu $t9,$t7,0x48 /* a180: 00807025 */ or $t6,$a0,$zero .L0000a184: /* a184: 8de10000 */ lw $at,0x0($t7) /* a188: 25ef000c */ addiu $t7,$t7,12 /* a18c: 25ce000c */ addiu $t6,$t6,12 /* a190: adc1fff4 */ sw $at,-0xc($t6) /* a194: 8de1fff8 */ lw $at,-0x8($t7) /* a198: adc1fff8 */ sw $at,-0x8($t6) /* a19c: 8de1fffc */ lw $at,-0x4($t7) /* a1a0: 15f9fff8 */ bne $t7,$t9,.L0000a184 /* a1a4: adc1fffc */ sw $at,-0x4($t6) /* a1a8: 8de10000 */ lw $at,0x0($t7) /* a1ac: adc10000 */ sw $at,0x0($t6) /* a1b0: 8df90004 */ lw $t9,0x4($t7) /* a1b4: 10000048 */ b .L0000a2d8 /* a1b8: add90004 */ sw $t9,0x4($t6) .L0000a1bc: /* a1bc: 000bc080 */ sll $t8,$t3,0x2 /* a1c0: 030bc021 */ addu $t8,$t8,$t3 /* a1c4: 0018c100 */ sll $t8,$t8,0x4 /* a1c8: 03192021 */ addu $a0,$t8,$t9 /* a1cc: 25eff7b0 */ addiu $t7,$t7,%lo(osViModeTable+0xa0) /* a1d0: 25f80048 */ addiu $t8,$t7,0x48 /* a1d4: 0080c825 */ or $t9,$a0,$zero .L0000a1d8: /* a1d8: 8de10000 */ lw $at,0x0($t7) /* a1dc: 25ef000c */ addiu $t7,$t7,0xc /* a1e0: 2739000c */ addiu $t9,$t9,0xc /* a1e4: af21fff4 */ sw $at,-0xc($t9) /* a1e8: 8de1fff8 */ lw $at,-0x8($t7) /* a1ec: af21fff8 */ sw $at,-0x8($t9) /* a1f0: 8de1fffc */ lw $at,-0x4($t7) /* a1f4: 15f8fff8 */ bne $t7,$t8,.L0000a1d8 /* a1f8: af21fffc */ sw $at,-0x4($t9) /* a1fc: 8de10000 */ lw $at,0x0($t7) /* a200: af210000 */ sw $at,0x0($t9) /* a204: 8df80004 */ lw $t8,0x4($t7) /* a208: 10000033 */ b .L0000a2d8 /* a20c: af380004 */ sw $t8,0x4($t9) .L0000a210: /* a210: 3c0e8000 */ lui $t6,0x8000 /* a214: 8dce0300 */ lw $t6,0x300($t6) /* a218: 148e0018 */ bne $a0,$t6,.L0000a27c /* a21c: 000bc080 */ sll $t8,$t3,0x2 /* a220: 030bc021 */ addu $t8,$t8,$t3 /* a224: 3c0f8009 */ lui $t7,%hi(var8008dcc0) /* a228: 25efdcc0 */ addiu $t7,$t7,%lo(var8008dcc0) /* a22c: 0018c100 */ sll $t8,$t8,0x4 /* a230: 030f2021 */ addu $a0,$t8,$t7 /* a234: 3c198006 */ lui $t9,%hi(osViModeTable+0xaa0) /* a238: 273901b0 */ addiu $t9,$t9,%lo(osViModeTable+0xaa0) /* a23c: 27380048 */ addiu $t8,$t9,0x48 /* a240: 00807825 */ or $t7,$a0,$zero .L0000a244: /* a244: 8f210000 */ lw $at,0x0($t9) /* a248: 2739000c */ addiu $t9,$t9,0xc /* a24c: 25ef000c */ addiu $t7,$t7,0xc /* a250: ade1fff4 */ sw $at,-0xc($t7) /* a254: 8f21fff8 */ lw $at,-0x8($t9) /* a258: ade1fff8 */ sw $at,-0x8($t7) /* a25c: 8f21fffc */ lw $at,-0x4($t9) /* a260: 1738fff8 */ bne $t9,$t8,.L0000a244 /* a264: ade1fffc */ sw $at,-0x4($t7) /* a268: 8f210000 */ lw $at,0x0($t9) /* a26c: ade10000 */ sw $at,0x0($t7) /* a270: 8f380004 */ lw $t8,0x4($t9) /* a274: 10000018 */ b .L0000a2d8 /* a278: adf80004 */ sw $t8,0x4($t7) .L0000a27c: /* a27c: 000b7080 */ sll $t6,$t3,0x2 /* a280: 01cb7021 */ addu $t6,$t6,$t3 /* a284: 3c188009 */ lui $t8,%hi(var8008dcc0) /* a288: 2718dcc0 */ addiu $t8,$t8,%lo(var8008dcc0) /* a28c: 000e7100 */ sll $t6,$t6,0x4 /* a290: 01d82021 */ addu $a0,$t6,$t8 /* a294: 3c198006 */ lui $t9,%hi(osViModeTable+0x1e0) /* a298: 2739f8f0 */ addiu $t9,$t9,%lo(osViModeTable+0x1e0) /* a29c: 272e0048 */ addiu $t6,$t9,0x48 /* a2a0: 0080c025 */ or $t8,$a0,$zero .L0000a2a4: /* a2a4: 8f210000 */ lw $at,0x0($t9) /* a2a8: 2739000c */ addiu $t9,$t9,0xc /* a2ac: 2718000c */ addiu $t8,$t8,0xc /* a2b0: af01fff4 */ sw $at,-0xc($t8) /* a2b4: 8f21fff8 */ lw $at,-0x8($t9) /* a2b8: af01fff8 */ sw $at,-0x8($t8) /* a2bc: 8f21fffc */ lw $at,-0x4($t9) /* a2c0: 172efff8 */ bne $t9,$t6,.L0000a2a4 /* a2c4: af01fffc */ sw $at,-0x4($t8) /* a2c8: 8f210000 */ lw $at,0x0($t9) /* a2cc: af010000 */ sw $at,0x0($t8) /* a2d0: 8f2e0004 */ lw $t6,0x4($t9) /* a2d4: af0e0004 */ sw $t6,0x4($t8) .L0000a2d8: /* a2d8: 852f0018 */ lh $t7,0x18($t1) /* a2dc: 24010280 */ addiu $at,$zero,0x280 /* a2e0: 3c0d8009 */ lui $t5,%hi(var8008de0c) /* a2e4: ac8f0008 */ sw $t7,0x8($a0) /* a2e8: 852e0018 */ lh $t6,0x18($t1) /* a2ec: 3406ffff */ dli $a2,0xffff /* a2f0: 25adde0c */ addiu $t5,$t5,%lo(var8008de0c) /* a2f4: 000eca80 */ sll $t9,$t6,0xa /* a2f8: 0321001a */ div $zero,$t9,$at /* a2fc: 0000c012 */ mflo $t8 /* a300: ac980020 */ sw $t8,0x20($a0) /* a304: 852f0018 */ lh $t7,0x18($t1) /* a308: 000f7040 */ sll $t6,$t7,0x1 /* a30c: ac8e0028 */ sw $t6,0x28($a0) /* a310: 85390018 */ lh $t9,0x18($t1) /* a314: 3c0f8009 */ lui $t7,%hi(g_Is4Mb) /* a318: 0019c040 */ sll $t8,$t9,0x1 /* a31c: ac98003c */ sw $t8,0x3c($a0) /* a320: 91ef0af0 */ lbu $t7,%lo(g_Is4Mb)($t7) /* a324: 17ef0004 */ bne $ra,$t7,.L0000a338 /* a328: 24020400 */ addiu $v0,$zero,0x400 /* a32c: ac82002c */ sw $v0,0x2c($a0) /* a330: 1000001e */ b .L0000a3ac /* a334: ac820040 */ sw $v0,0x40($a0) .L0000a338: /* a338: 852e001a */ lh $t6,0x1a($t1) /* a33c: 240201b8 */ addiu $v0,$zero,0x1b8 /* a340: 000ecac0 */ sll $t9,$t6,0xb /* a344: 0322001a */ div $zero,$t9,$v0 /* a348: 0000c012 */ mflo $t8 /* a34c: ac98002c */ sw $t8,0x2c($a0) /* a350: 852f001a */ lh $t7,0x1a($t1) /* a354: 14400002 */ bnez $v0,.L0000a360 /* a358: 00000000 */ nop /* a35c: 0007000d */ break 0x7 .L0000a360: /* a360: 2401ffff */ addiu $at,$zero,-1 /* a364: 14410004 */ bne $v0,$at,.L0000a378 /* a368: 3c018000 */ lui $at,0x8000 /* a36c: 17210002 */ bne $t9,$at,.L0000a378 /* a370: 00000000 */ nop /* a374: 0006000d */ break 0x6 .L0000a378: /* a378: 000f72c0 */ sll $t6,$t7,0xb /* a37c: 01c2001a */ div $zero,$t6,$v0 /* a380: 0000c812 */ mflo $t9 /* a384: ac990040 */ sw $t9,0x40($a0) /* a388: 14400002 */ bnez $v0,.L0000a394 /* a38c: 00000000 */ nop /* a390: 0007000d */ break 0x7 .L0000a394: /* a394: 2401ffff */ addiu $at,$zero,-1 /* a398: 14410004 */ bne $v0,$at,.L0000a3ac /* a39c: 3c018000 */ lui $at,0x8000 /* a3a0: 15c10002 */ bne $t6,$at,.L0000a3ac /* a3a4: 00000000 */ nop /* a3a8: 0006000d */ break 0x6 .L0000a3ac: /* a3ac: 8c85001c */ lw $a1,0x1c($a0) /* a3b0: 3c078006 */ lui $a3,%hi(var8005d588) /* a3b4: 8ce7d588 */ lw $a3,%lo(var8005d588)($a3) /* a3b8: 0005c403 */ sra $t8,$a1,0x10 /* a3bc: 330fffff */ andi $t7,$t8,0xffff /* a3c0: 01e77021 */ addu $t6,$t7,$a3 /* a3c4: 01c6001a */ div $zero,$t6,$a2 /* a3c8: 14c00002 */ bnez $a2,.L0000a3d4 /* a3cc: 00000000 */ nop /* a3d0: 0007000d */ break 0x7 .L0000a3d4: /* a3d4: 2401ffff */ addiu $at,$zero,-1 /* a3d8: 14c10004 */ bne $a2,$at,.L0000a3ec /* a3dc: 3c018000 */ lui $at,0x8000 /* a3e0: 15c10002 */ bne $t6,$at,.L0000a3ec /* a3e4: 00000000 */ nop /* a3e8: 0006000d */ break 0x6 .L0000a3ec: /* a3ec: 30afffff */ andi $t7,$a1,0xffff /* a3f0: 01e77021 */ addu $t6,$t7,$a3 /* a3f4: 0000c810 */ mfhi $t9 /* a3f8: 0019c400 */ sll $t8,$t9,0x10 /* a3fc: 3c1f8009 */ lui $ra,%hi(var8008de10) /* a400: 01c6001a */ div $zero,$t6,$a2 /* a404: 14c00002 */ bnez $a2,.L0000a410 /* a408: 00000000 */ nop /* a40c: 0007000d */ break 0x7 .L0000a410: /* a410: 2401ffff */ addiu $at,$zero,-1 /* a414: 14c10004 */ bne $a2,$at,.L0000a428 /* a418: 3c018000 */ lui $at,0x8000 /* a41c: 15c10002 */ bne $t6,$at,.L0000a428 /* a420: 00000000 */ nop /* a424: 0006000d */ break 0x6 .L0000a428: /* a428: 0000c810 */ mfhi $t9 /* a42c: 03191025 */ or $v0,$t8,$t9 /* a430: ac82001c */ sw $v0,0x1c($a0) /* a434: 3c018009 */ lui $at,%hi(var8008de08) /* a438: ac22de08 */ sw $v0,%lo(var8008de08)($at) /* a43c: 8523001a */ lh $v1,0x1a($t1) /* a440: 8c8e002c */ lw $t6,0x2c($a0) /* a444: 27ffde10 */ addiu $ra,$ra,%lo(var8008de10) /* a448: 00037a80 */ sll $t7,$v1,0xa /* a44c: 01ee001b */ divu $zero,$t7,$t6 /* a450: 00001812 */ mflo $v1 /* a454: 2861012d */ slti $at,$v1,0x12d /* a458: 15c00002 */ bnez $t6,.L0000a464 /* a45c: 00000000 */ nop /* a460: 0007000d */ break 0x7 .L0000a464: /* a464: 24190115 */ addiu $t9,$zero,0x115 /* a468: 14200003 */ bnez $at,.L0000a478 /* a46c: 3c058006 */ lui $a1,%hi(var8005d58c) /* a470: 0003c043 */ sra $t8,$v1,0x1 /* a474: 03001825 */ or $v1,$t8,$zero .L0000a478: /* a478: 03233823 */ subu $a3,$t9,$v1 /* a47c: 24ef0002 */ addiu $t7,$a3,0x2 /* a480: 2478fffe */ addiu $t8,$v1,-2 /* a484: 0018c840 */ sll $t9,$t8,0x1 /* a488: 000f7400 */ sll $t6,$t7,0x10 /* a48c: 00f97821 */ addu $t7,$a3,$t9 /* a490: 25f80002 */ addiu $t8,$t7,0x2 /* a494: 8ca5d58c */ lw $a1,%lo(var8005d58c)($a1) /* a498: 01d84025 */ or $t0,$t6,$t8 /* a49c: 0008cc03 */ sra $t9,$t0,0x10 /* a4a0: 332fffff */ andi $t7,$t9,0xffff /* a4a4: 01e57021 */ addu $t6,$t7,$a1 /* a4a8: 01c6001a */ div $zero,$t6,$a2 /* a4ac: 14c00002 */ bnez $a2,.L0000a4b8 /* a4b0: 00000000 */ nop /* a4b4: 0007000d */ break 0x7 .L0000a4b8: /* a4b8: 2401ffff */ addiu $at,$zero,-1 /* a4bc: 14c10004 */ bne $a2,$at,.L0000a4d0 /* a4c0: 3c018000 */ lui $at,0x8000 /* a4c4: 15c10002 */ bne $t6,$at,.L0000a4d0 /* a4c8: 00000000 */ nop /* a4cc: 0006000d */ break 0x6 .L0000a4d0: /* a4d0: 310fffff */ andi $t7,$t0,0xffff /* a4d4: 01e57021 */ addu $t6,$t7,$a1 /* a4d8: 0000c010 */ mfhi $t8 /* a4dc: 0018cc00 */ sll $t9,$t8,0x10 /* a4e0: 240f0001 */ addiu $t7,$zero,0x1 /* a4e4: 01c6001a */ div $zero,$t6,$a2 /* a4e8: 14c00002 */ bnez $a2,.L0000a4f4 /* a4ec: 00000000 */ nop /* a4f0: 0007000d */ break 0x7 .L0000a4f4: /* a4f4: 2401ffff */ addiu $at,$zero,-1 /* a4f8: 14c10004 */ bne $a2,$at,.L0000a50c /* a4fc: 3c018000 */ lui $at,0x8000 /* a500: 15c10002 */ bne $t6,$at,.L0000a50c /* a504: 00000000 */ nop /* a508: 0006000d */ break 0x6 .L0000a50c: /* a50c: 0000c010 */ mfhi $t8 /* a510: 03381025 */ or $v0,$t9,$t8 /* a514: 3c018006 */ lui $at,%hi(g_SchedViModesPending) /* a518: ac820030 */ sw $v0,0x30($a0) /* a51c: ada20000 */ sw $v0,0x0($t5) /* a520: ac820044 */ sw $v0,0x44($a0) /* a524: afe20000 */ sw $v0,0x0($ra) /* a528: 002c0821 */ addu $at,$at,$t4 /* a52c: 100000f6 */ b .L0000a908 /* a530: ac2fce88 */ sw $t7,%lo(g_SchedViModesPending)($at) .L0000a534: /* a534: 148300ef */ bne $a0,$v1,.L0000a8f4 /* a538: 3c0e8000 */ lui $t6,0x8000 /* a53c: 8dce0300 */ lw $t6,0x300($t6) /* a540: 3406ffff */ dli $a2,0xffff /* a544: 24080800 */ addiu $t0,$zero,0x800 /* a548: 148e0019 */ bne $a0,$t6,.L0000a5b0 /* a54c: 3c0d8009 */ lui $t5,%hi(var8008de0c) /* a550: 000bc880 */ sll $t9,$t3,0x2 /* a554: 032bc821 */ addu $t9,$t9,$t3 /* a558: 3c188009 */ lui $t8,%hi(var8008dcc0) /* a55c: 2718dcc0 */ addiu $t8,$t8,%lo(var8008dcc0) /* a560: 0019c900 */ sll $t9,$t9,0x4 /* a564: 03382021 */ addu $a0,$t9,$t8 /* a568: 3c0f8006 */ lui $t7,%hi(osViModeTable+0xc30) /* a56c: 25ef0340 */ addiu $t7,$t7,%lo(osViModeTable+0xc30) /* a570: 25f90048 */ addiu $t9,$t7,0x48 /* a574: 0080c025 */ or $t8,$a0,$zero .L0000a578: /* a578: 8de10000 */ lw $at,0x0($t7) /* a57c: 25ef000c */ addiu $t7,$t7,12 /* a580: 2718000c */ addiu $t8,$t8,0xc /* a584: af01fff4 */ sw $at,-0xc($t8) /* a588: 8de1fff8 */ lw $at,-0x8($t7) /* a58c: af01fff8 */ sw $at,-0x8($t8) /* a590: 8de1fffc */ lw $at,-0x4($t7) /* a594: 15f9fff8 */ bne $t7,$t9,.L0000a578 /* a598: af01fffc */ sw $at,-0x4($t8) /* a59c: 8de10000 */ lw $at,0x0($t7) /* a5a0: af010000 */ sw $at,0x0($t8) /* a5a4: 8df90004 */ lw $t9,0x4($t7) /* a5a8: 10000018 */ b .L0000a60c /* a5ac: af190004 */ sw $t9,0x4($t8) .L0000a5b0: /* a5b0: 000b7080 */ sll $t6,$t3,0x2 /* a5b4: 01cb7021 */ addu $t6,$t6,$t3 /* a5b8: 3c198009 */ lui $t9,%hi(var8008dcc0) /* a5bc: 2739dcc0 */ addiu $t9,$t9,%lo(var8008dcc0) /* a5c0: 000e7100 */ sll $t6,$t6,0x4 /* a5c4: 01d92021 */ addu $a0,$t6,$t9 /* a5c8: 3c0f8006 */ lui $t7,%hi(osViModeTable+0x370) /* a5cc: 25effa80 */ addiu $t7,$t7,%lo(osViModeTable+0x370) /* a5d0: 25ee0048 */ addiu $t6,$t7,0x48 /* a5d4: 0080c825 */ or $t9,$a0,$zero .L0000a5d8: /* a5d8: 8de10000 */ lw $at,0x0($t7) /* a5dc: 25ef000c */ addiu $t7,$t7,0xc /* a5e0: 2739000c */ addiu $t9,$t9,0xc /* a5e4: af21fff4 */ sw $at,-0xc($t9) /* a5e8: 8de1fff8 */ lw $at,-0x8($t7) /* a5ec: af21fff8 */ sw $at,-0x8($t9) /* a5f0: 8de1fffc */ lw $at,-0x4($t7) /* a5f4: 15eefff8 */ bne $t7,$t6,.L0000a5d8 /* a5f8: af21fffc */ sw $at,-0x4($t9) /* a5fc: 8de10000 */ lw $at,0x0($t7) /* a600: af210000 */ sw $at,0x0($t9) /* a604: 8dee0004 */ lw $t6,0x4($t7) /* a608: af2e0004 */ sw $t6,0x4($t9) .L0000a60c: /* a60c: 85380018 */ lh $t8,0x18($t1) /* a610: 24010280 */ addiu $at,$zero,0x280 /* a614: 8c83001c */ lw $v1,0x1c($a0) /* a618: ac980008 */ sw $t8,0x8($a0) /* a61c: 852e0018 */ lh $t6,0x18($t1) /* a620: ac88002c */ sw $t0,0x2c($a0) /* a624: ac880040 */ sw $t0,0x40($a0) /* a628: 000e7a80 */ sll $t7,$t6,0xa /* a62c: 01e1001a */ div $zero,$t7,$at /* a630: 0000c812 */ mflo $t9 /* a634: ac990020 */ sw $t9,0x20($a0) /* a638: 85380018 */ lh $t8,0x18($t1) /* a63c: 3c078006 */ lui $a3,%hi(var8005d588) /* a640: 3c058006 */ lui $a1,%hi(var8005d58c) /* a644: 00187040 */ sll $t6,$t8,0x1 /* a648: ac8e0028 */ sw $t6,0x28($a0) /* a64c: 852f0018 */ lh $t7,0x18($t1) /* a650: 0003c403 */ sra $t8,$v1,0x10 /* a654: 330effff */ andi $t6,$t8,0xffff /* a658: 000fc880 */ sll $t9,$t7,0x2 /* a65c: ac99003c */ sw $t9,0x3c($a0) /* a660: 8ce7d588 */ lw $a3,%lo(var8005d588)($a3) /* a664: 25adde0c */ addiu $t5,$t5,%lo(var8008de0c) /* a668: 3c1f8009 */ lui $ra,%hi(var8008de10) /* a66c: 01c77821 */ addu $t7,$t6,$a3 /* a670: 01e6001a */ div $zero,$t7,$a2 /* a674: 14c00002 */ bnez $a2,.L0000a680 /* a678: 00000000 */ nop /* a67c: 0007000d */ break 0x7 .L0000a680: /* a680: 2401ffff */ addiu $at,$zero,-1 /* a684: 14c10004 */ bne $a2,$at,.L0000a698 /* a688: 3c018000 */ lui $at,0x8000 /* a68c: 15e10002 */ bne $t7,$at,.L0000a698 /* a690: 00000000 */ nop /* a694: 0006000d */ break 0x6 .L0000a698: /* a698: 306effff */ andi $t6,$v1,0xffff /* a69c: 0000c810 */ mfhi $t9 /* a6a0: 01c77821 */ addu $t7,$t6,$a3 /* a6a4: 0019c400 */ sll $t8,$t9,0x10 /* a6a8: 01e6001a */ div $zero,$t7,$a2 /* a6ac: 14c00002 */ bnez $a2,.L0000a6b8 /* a6b0: 00000000 */ nop /* a6b4: 0007000d */ break 0x7 .L0000a6b8: /* a6b8: 2401ffff */ addiu $at,$zero,-1 /* a6bc: 14c10004 */ bne $a2,$at,.L0000a6d0 /* a6c0: 3c018000 */ lui $at,0x8000 /* a6c4: 15e10002 */ bne $t7,$at,.L0000a6d0 /* a6c8: 00000000 */ nop /* a6cc: 0006000d */ break 0x6 .L0000a6d0: /* a6d0: 0000c810 */ mfhi $t9 /* a6d4: 03191025 */ or $v0,$t8,$t9 /* a6d8: ac82001c */ sw $v0,0x1c($a0) /* a6dc: 3c018009 */ lui $at,%hi(var8008de08) /* a6e0: ac22de08 */ sw $v0,%lo(var8008de08)($at) /* a6e4: 8c830030 */ lw $v1,0x30($a0) /* a6e8: 8ca5d58c */ lw $a1,%lo(var8005d58c)($a1) /* a6ec: 27ffde10 */ addiu $ra,$ra,%lo(var8008de10) /* a6f0: 00037403 */ sra $t6,$v1,0x10 /* a6f4: 31cfffff */ andi $t7,$t6,0xffff /* a6f8: 01e5c021 */ addu $t8,$t7,$a1 /* a6fc: 0306001a */ div $zero,$t8,$a2 /* a700: 14c00002 */ bnez $a2,.L0000a70c /* a704: 00000000 */ nop /* a708: 0007000d */ break 0x7 .L0000a70c: /* a70c: 2401ffff */ addiu $at,$zero,-1 /* a710: 14c10004 */ bne $a2,$at,.L0000a724 /* a714: 3c018000 */ lui $at,0x8000 /* a718: 17010002 */ bne $t8,$at,.L0000a724 /* a71c: 00000000 */ nop /* a720: 0006000d */ break 0x6 .L0000a724: /* a724: 306fffff */ andi $t7,$v1,0xffff /* a728: 01e5c021 */ addu $t8,$t7,$a1 /* a72c: 0000c810 */ mfhi $t9 /* a730: 8c830044 */ lw $v1,0x44($a0) /* a734: 00197400 */ sll $t6,$t9,0x10 /* a738: 0306001a */ div $zero,$t8,$a2 /* a73c: 14c00002 */ bnez $a2,.L0000a748 /* a740: 00000000 */ nop /* a744: 0007000d */ break 0x7 .L0000a748: /* a748: 2401ffff */ addiu $at,$zero,-1 /* a74c: 14c10004 */ bne $a2,$at,.L0000a760 /* a750: 3c018000 */ lui $at,0x8000 /* a754: 17010002 */ bne $t8,$at,.L0000a760 /* a758: 00000000 */ nop /* a75c: 0006000d */ break 0x6 .L0000a760: /* a760: 0000c810 */ mfhi $t9 /* a764: 00037c03 */ sra $t7,$v1,0x10 /* a768: 01d91025 */ or $v0,$t6,$t9 /* a76c: 31f8ffff */ andi $t8,$t7,0xffff /* a770: 03057021 */ addu $t6,$t8,$a1 /* a774: 01c6001a */ div $zero,$t6,$a2 /* a778: 3078ffff */ andi $t8,$v1,0xffff /* a77c: 0000c810 */ mfhi $t9 /* a780: 00197c00 */ sll $t7,$t9,0x10 /* a784: ac820030 */ sw $v0,0x30($a0) /* a788: ada20000 */ sw $v0,0x0($t5) /* a78c: 14c00002 */ bnez $a2,.L0000a798 /* a790: 00000000 */ nop /* a794: 0007000d */ break 0x7 .L0000a798: /* a798: 2401ffff */ addiu $at,$zero,-1 /* a79c: 14c10004 */ bne $a2,$at,.L0000a7b0 /* a7a0: 3c018000 */ lui $at,0x8000 /* a7a4: 15c10002 */ bne $t6,$at,.L0000a7b0 /* a7a8: 00000000 */ nop /* a7ac: 0006000d */ break 0x6 .L0000a7b0: /* a7b0: 03057021 */ addu $t6,$t8,$a1 /* a7b4: 01c6001a */ div $zero,$t6,$a2 /* a7b8: 0000c810 */ mfhi $t9 /* a7bc: 01f91025 */ or $v0,$t7,$t9 /* a7c0: ac820044 */ sw $v0,0x44($a0) /* a7c4: afe20000 */ sw $v0,0x0($ra) /* a7c8: 3c188006 */ lui $t8,%hi(var8005dd18) /* a7cc: 8f18dd18 */ lw $t8,%lo(var8005dd18)($t8) /* a7d0: 14c00002 */ bnez $a2,.L0000a7dc /* a7d4: 00000000 */ nop /* a7d8: 0007000d */ break 0x7 .L0000a7dc: /* a7dc: 2401ffff */ addiu $at,$zero,-1 /* a7e0: 14c10004 */ bne $a2,$at,.L0000a7f4 /* a7e4: 3c018000 */ lui $at,0x8000 /* a7e8: 15c10002 */ bne $t6,$at,.L0000a7f4 /* a7ec: 00000000 */ nop /* a7f0: 0006000d */ break 0x6 .L0000a7f4: /* a7f4: 3c0a8006 */ lui $t2,%hi(g_ViIs16Bit) /* a7f8: 13000038 */ beqz $t8,.L0000a8dc /* a7fc: 24ae01af */ addiu $t6,$a1,0x1af /* a800: 01c6001a */ div $zero,$t6,$a2 /* a804: 00007810 */ mfhi $t7 /* a808: 24b8007b */ addiu $t8,$a1,0x7b /* a80c: 14c00002 */ bnez $a2,.L0000a818 /* a810: 00000000 */ nop /* a814: 0007000d */ break 0x7 .L0000a818: /* a818: 2401ffff */ addiu $at,$zero,-1 /* a81c: 14c10004 */ bne $a2,$at,.L0000a830 /* a820: 3c018000 */ lui $at,0x8000 /* a824: 15c10002 */ bne $t6,$at,.L0000a830 /* a828: 00000000 */ nop /* a82c: 0006000d */ break 0x6 .L0000a830: /* a830: 0306001a */ div $zero,$t8,$a2 /* a834: 00007010 */ mfhi $t6 /* a838: 000fcc00 */ sll $t9,$t7,0x10 /* a83c: 24af01b1 */ addiu $t7,$a1,0x1b1 /* a840: 01e6001a */ div $zero,$t7,$a2 /* a844: 032e1025 */ or $v0,$t9,$t6 /* a848: 24ae0079 */ addiu $t6,$a1,0x79 /* a84c: 14c00002 */ bnez $a2,.L0000a858 /* a850: 00000000 */ nop /* a854: 0007000d */ break 0x7 .L0000a858: /* a858: 2401ffff */ addiu $at,$zero,-1 /* a85c: 14c10004 */ bne $a2,$at,.L0000a870 /* a860: 3c018000 */ lui $at,0x8000 /* a864: 17010002 */ bne $t8,$at,.L0000a870 /* a868: 00000000 */ nop /* a86c: 0006000d */ break 0x6 .L0000a870: /* a870: 0000c010 */ mfhi $t8 /* a874: ac820030 */ sw $v0,0x30($a0) /* a878: ada20000 */ sw $v0,0x0($t5) /* a87c: 01c6001a */ div $zero,$t6,$a2 /* a880: 14c00002 */ bnez $a2,.L0000a88c /* a884: 00000000 */ nop /* a888: 0007000d */ break 0x7 .L0000a88c: /* a88c: 2401ffff */ addiu $at,$zero,-1 /* a890: 14c10004 */ bne $a2,$at,.L0000a8a4 /* a894: 3c018000 */ lui $at,0x8000 /* a898: 15e10002 */ bne $t7,$at,.L0000a8a4 /* a89c: 00000000 */ nop /* a8a0: 0006000d */ break 0x6 .L0000a8a4: /* a8a4: 00007810 */ mfhi $t7 /* a8a8: 0018cc00 */ sll $t9,$t8,0x10 /* a8ac: 032f1025 */ or $v0,$t9,$t7 /* a8b0: ac820044 */ sw $v0,0x44($a0) /* a8b4: afe20000 */ sw $v0,0x0($ra) /* a8b8: 14c00002 */ bnez $a2,.L0000a8c4 /* a8bc: 00000000 */ nop /* a8c0: 0007000d */ break 0x7 .L0000a8c4: /* a8c4: 2401ffff */ addiu $at,$zero,-1 /* a8c8: 14c10004 */ bne $a2,$at,.L0000a8dc /* a8cc: 3c018000 */ lui $at,0x8000 /* a8d0: 15c10002 */ bne $t6,$at,.L0000a8dc /* a8d4: 00000000 */ nop /* a8d8: 0006000d */ break 0x6 .L0000a8dc: /* a8dc: 3c018006 */ lui $at,%hi(g_SchedViModesPending) /* a8e0: 002c0821 */ addu $at,$at,$t4 /* a8e4: 24180001 */ addiu $t8,$zero,0x1 /* a8e8: ac38ce88 */ sw $t8,%lo(g_SchedViModesPending)($at) /* a8ec: 10000006 */ b .L0000a908 /* a8f0: 8d4ad598 */ lw $t2,%lo(g_ViIs16Bit)($t2) .L0000a8f4: /* a8f4: 3c018006 */ lui $at,%hi(g_SchedViModesPending) /* a8f8: 002c0821 */ addu $at,$at,$t4 /* a8fc: 3c0a8006 */ lui $t2,%hi(g_ViIs16Bit) /* a900: 8d4ad598 */ lw $t2,%lo(g_ViIs16Bit)($t2) /* a904: ac20ce88 */ sw $zero,%lo(g_SchedViModesPending)($at) .L0000a908: /* a908: 256b0001 */ addiu $t3,$t3,0x1 /* a90c: 05610004 */ bgez $t3,.L0000a920 /* a910: 316e0001 */ andi $t6,$t3,0x1 /* a914: 11c00002 */ beqz $t6,.L0000a920 /* a918: 00000000 */ nop /* a91c: 25cefffe */ addiu $t6,$t6,-2 .L0000a920: /* a920: 3c018006 */ lui $at,%hi(g_ViSlot) /* a924: 11400006 */ beqz $t2,.L0000a940 /* a928: ac2ed5a0 */ sw $t6,%lo(g_ViSlot)($at) /* a92c: 3c0f8006 */ lui $t7,%hi(g_RdpCurTask) /* a930: 8deff108 */ lw $t7,%lo(g_RdpCurTask)($t7) /* a934: 8d390028 */ lw $t9,0x28($t1) /* a938: 10000006 */ b .L0000a954 /* a93c: adf90058 */ sw $t9,0x58($t7) .L0000a940: /* a940: 3c18800a */ lui $t8,%hi(g_FrameBuffers) /* a944: 3c0e8006 */ lui $t6,%hi(g_RdpCurTask) /* a948: 8dcef108 */ lw $t6,%lo(g_RdpCurTask)($t6) /* a94c: 8f18cac0 */ lw $t8,%lo(g_FrameBuffers)($t8) /* a950: add80058 */ sw $t8,0x58($t6) .L0000a954: /* a954: 3c028009 */ lui $v0,%hi(g_ViPerspScale+0x2) /* a958: 24422876 */ addiu $v0,$v0,%lo(g_ViPerspScale+0x2) /* a95c: 90590000 */ lbu $t9,0x0($v0) /* a960: 3c048006 */ lui $a0,%hi(g_ViBackData) /* a964: 8c84d594 */ lw $a0,%lo(g_ViBackData)($a0) /* a968: 272f0001 */ addiu $t7,$t9,0x1 /* a96c: 3c038009 */ lui $v1,%hi(g_ViPerspScale+0x3) /* a970: 2408002c */ addiu $t0,$zero,0x2c /* a974: 24632877 */ addiu $v1,$v1,%lo(g_ViPerspScale+0x3) /* a978: 906e0000 */ lbu $t6,0x0($v1) /* a97c: 3c078006 */ lui $a3,%hi(g_ViDataArray) /* a980: 24e7d530 */ addiu $a3,$a3,%lo(g_ViDataArray) /* a984: 05e10004 */ bgez $t7,.L0000a998 /* a988: 31f80001 */ andi $t8,$t7,0x1 /* a98c: 13000002 */ beqz $t8,.L0000a998 /* a990: 00000000 */ nop /* a994: 2718fffe */ addiu $t8,$t8,-2 .L0000a998: /* a998: a0580000 */ sb $t8,0x0($v0) /* a99c: 90580000 */ lbu $t8,0x0($v0) /* a9a0: 25d90001 */ addiu $t9,$t6,0x1 /* a9a4: 07210004 */ bgez $t9,.L0000a9b8 /* a9a8: 332f0001 */ andi $t7,$t9,0x1 /* a9ac: 11e00002 */ beqz $t7,.L0000a9b8 /* a9b0: 00000000 */ nop /* a9b4: 25effffe */ addiu $t7,$t7,-2 .L0000a9b8: /* a9b8: 03080019 */ multu $t8,$t0 /* a9bc: a06f0000 */ sb $t7,0x0($v1) /* a9c0: 3c018006 */ lui $at,%hi(g_ViFrontData) /* a9c4: 3c058006 */ lui $a1,%hi(g_ViBackData) /* a9c8: 2406002c */ addiu $a2,$zero,0x2c /* a9cc: 00007012 */ mflo $t6 /* a9d0: 00eec821 */ addu $t9,$a3,$t6 /* a9d4: ac39d590 */ sw $t9,%lo(g_ViFrontData)($at) /* a9d8: 906f0000 */ lbu $t7,0x0($v1) /* a9dc: 3c018006 */ lui $at,%hi(g_ViBackData) /* a9e0: 01e80019 */ multu $t7,$t0 /* a9e4: 0000c012 */ mflo $t8 /* a9e8: 00f87021 */ addu $t6,$a3,$t8 /* a9ec: ac2ed594 */ sw $t6,%lo(g_ViBackData)($at) /* a9f0: 0c012c5c */ jal bcopy /* a9f4: 8ca5d594 */ lw $a1,%lo(g_ViBackData)($a1) /* a9f8: 3c038009 */ lui $v1,%hi(g_ViPerspScale+0x3) /* a9fc: 24632877 */ addiu $v1,$v1,%lo(g_ViPerspScale+0x3) /* aa00: 90790000 */ lbu $t9,0x0($v1) /* aa04: 3c18800a */ lui $t8,%hi(g_FrameBuffers) /* aa08: 3c0e8006 */ lui $t6,%hi(g_ViBackData) /* aa0c: 00197880 */ sll $t7,$t9,0x2 /* aa10: 030fc021 */ addu $t8,$t8,$t7 /* aa14: 8f18cac0 */ lw $t8,%lo(g_FrameBuffers)($t8) /* aa18: 8dced594 */ lw $t6,%lo(g_ViBackData)($t6) /* aa1c: 3c028006 */ lui $v0,%hi(g_ViReconfigured) /* aa20: 2442d59c */ addiu $v0,$v0,%lo(g_ViReconfigured) /* aa24: add80028 */ sw $t8,0x28($t6) /* aa28: 8c590000 */ lw $t9,0x0($v0) /* aa2c: 53200005 */ beqzl $t9,.L0000aa44 /* aa30: 8fbf0014 */ lw $ra,0x14($sp) /* aa34: ac400000 */ sw $zero,0x0($v0) /* aa38: 0c0027b1 */ jal viBlack /* aa3c: 00002025 */ or $a0,$zero,$zero /* aa40: 8fbf0014 */ lw $ra,0x14($sp) .L0000aa44: /* aa44: 27bd0018 */ addiu $sp,$sp,0x18 /* aa48: 03e00008 */ jr $ra /* aa4c: 00000000 */ nop ); #endif // Mismatch: Different codegen near reg usage //void viUpdateMode(void) //{ // struct rend_vidat *prevdata; // f32 x; // f32 y; // s32 reg; // s32 v1; // s32 tmp; // // if (g_ViBackData->mode != g_ViFrontData->mode) { // switch (g_ViBackData->mode) { // case 0: // osViSetYScale(1); // osViBlack(true); // break; // case 1: // break; // case 2: // break; // } // } // // x = (f32)g_ViBackData->x / (f32)g_ViBackData->bufx; // y = (f32)g_ViBackData->y / (f32)g_ViBackData->bufy; // // if (g_ViBackData->mode == VIMODE_NONE) { // y = 1; // } // // g_ViXScalesBySlot[g_ViSlot] = x; // g_ViYScalesBySlot[g_ViSlot] = y; // // // 12c // if (g_ViBackData->mode == VIMODE_LO) { // if (g_ViIs16Bit) { // if (osTvType == OS_TV_MPAL) { // var8008dcc0[g_ViSlot] = osViModeTable[OS_VI_MPAL_LAN1]; // } else { // var8008dcc0[g_ViSlot] = osViModeTable[OS_VI_NTSC_LAN1]; // } // } else { // if (osTvType == OS_TV_MPAL) { // var8008dcc0[g_ViSlot] = osViModeTable[OS_VI_MPAL_LAN2]; // } else { // var8008dcc0[g_ViSlot] = osViModeTable[OS_VI_NTSC_LAN2]; // } // } // // var8008dcc0[g_ViSlot].comRegs.width = g_ViBackData->bufx; // var8008dcc0[g_ViSlot].comRegs.xScale = g_ViBackData->bufx * 1024 / 640; // var8008dcc0[g_ViSlot].fldRegs[0].origin = g_ViBackData->bufx * 2; // var8008dcc0[g_ViSlot].fldRegs[1].origin = g_ViBackData->bufx * 2; // // // 324 // if (IS4MB()) { // var8008dcc0[g_ViSlot].fldRegs[0].yScale = 1024; // var8008dcc0[g_ViSlot].fldRegs[1].yScale = 1024; // } else { // var8008dcc0[g_ViSlot].fldRegs[0].yScale = g_ViBackData->bufy * 2048 / 440; // var8008dcc0[g_ViSlot].fldRegs[1].yScale = g_ViBackData->bufy * 2048 / 440; // } // // // 3ac // reg = var8008dcc0[g_ViSlot].comRegs.hStart; // reg = ADD_LOW_AND_HI_16_MOD(reg, var8005d588); // var8008dcc0[g_ViSlot].comRegs.hStart = reg; // var8008dcc0[g_ViSlot].fldRegs[0].vStart = reg; // var8008dcc0[g_ViSlot].fldRegs[1].vStart = reg; // var8008de08 = reg; // // v1 = g_ViBackData->bufy * 1024 / var8008dcc0[g_ViSlot].fldRegs[0].yScale; // // // 458 // if (v1 > 300) { // v1 >>= 1; // } // // tmp = 277 - v1; // reg = ((tmp + 2) << 16) | (tmp + ((v1 - 2) * 2) + 2); // reg = ADD_LOW_AND_HI_16_MOD(reg, var8005d58c); // var8008de0c = reg; // var8008de10 = reg; // // g_SchedViModesPending[g_ViSlot] = true; // } else /*534*/ if (g_ViBackData->mode == VIMODE_HI) { // if (osTvType == OS_TV_MPAL) { // var8008dcc0[g_ViSlot] = osViModeTable[OS_VI_MPAL_HAF1]; // } else { // var8008dcc0[g_ViSlot] = osViModeTable[OS_VI_NTSC_HAF1]; // } // // var8008dcc0[g_ViSlot].comRegs.width = g_ViBackData->bufx; // var8008dcc0[g_ViSlot].comRegs.xScale = g_ViBackData->bufx * 1024 / 640; // var8008dcc0[g_ViSlot].fldRegs[0].yScale = 2048; // var8008dcc0[g_ViSlot].fldRegs[1].yScale = 2048; // var8008dcc0[g_ViSlot].fldRegs[0].origin = g_ViBackData->bufx * 2; // var8008dcc0[g_ViSlot].fldRegs[1].origin = g_ViBackData->bufx * 4; // // reg = var8008dcc0[g_ViSlot].comRegs.hStart; // reg = ADD_LOW_AND_HI_16_MOD(reg, var8005d588); // var8008dcc0[g_ViSlot].comRegs.hStart = reg; // var8008de08 = reg; // // reg = var8008dcc0[g_ViSlot].fldRegs[0].vStart; // reg = ADD_LOW_AND_HI_16_MOD(reg, var8005d58c); // var8008dcc0[g_ViSlot].fldRegs[0].vStart = reg; // var8008de0c = reg; // // reg = var8008dcc0[g_ViSlot].fldRegs[1].vStart; // reg = ADD_LOW_AND_HI_16_MOD(reg, var8005d58c); // var8008dcc0[g_ViSlot].fldRegs[1].vStart = reg; // var8008de10 = reg; // // // 7f8 // if (var8005dd18) { // reg = var8005d58c; // reg = (reg + 431) % 0xffff << 16 | (reg + 123) % 0xffff; // var8008dcc0[g_ViSlot].fldRegs[0].vStart = reg; // var8008de0c = reg; // // reg = var8005d58c; // reg = (reg + 433) % 0xffff << 16 | (reg + 121) % 0xffff; // var8008dcc0[g_ViSlot].fldRegs[1].vStart = reg; // var8008de10 = reg; // } // // g_SchedViModesPending[g_ViSlot] = true; // } else { // // 8f4 // g_SchedViModesPending[g_ViSlot] = false; // } // // // 908 // g_ViSlot = (g_ViSlot + 1) % 2; // // g_RdpCurTask->framebuffer = g_ViIs16Bit ? g_ViBackData->fb : g_FrameBuffers[0]; // // prevdata = g_ViBackData; // // g_ViFrontIndex = (g_ViFrontIndex + 1) % 2; // g_ViBackIndex = (g_ViBackIndex + 1) % 2; // // g_ViFrontData = g_ViDataArray + g_ViFrontIndex; // g_ViBackData = g_ViDataArray + g_ViBackIndex; // // bcopy(prevdata, g_ViBackData, sizeof(g_ViBackData)); // // g_ViBackData->fb = g_FrameBuffers[g_ViBackIndex]; // // if (g_ViReconfigured) { // g_ViReconfigured = false; // viBlack(false); // } //} void viShake(f32 intensity) { if (intensity > 14) { intensity = 14; } if (intensity < 0) { intensity = 0; } g_ViShakeIntensity = intensity; g_ViShakeTimer = 10; } void viSetMode(s32 mode) { g_ViBackData->mode = mode; g_ViBackData->x = g_ViBackData->bufx = g_ViModeWidths[mode]; g_ViBackData->y = g_ViBackData->bufy = g_ViModeHeights[mode]; } void viSet16Bit(void) { g_ViIs16Bit = true; } void viSet32Bit(void) { g_ViIs16Bit = false; } u8 *viGetBackBuffer(void) { return g_ViBackData->fb; } u8 *viGetFrontBuffer(void) { return g_ViFrontData->fb; } void viSetBackBuffer(u8 *fb) { g_ViBackData->fb = fb; } Vp *viGetCurrentPlayerViewport(void) { return &g_Vars.currentplayer->viewport[g_ViBackIndex]; } u16 viGetPerspScale(void) { return g_ViPerspScale; } Gfx *vi0000ab78(Gfx *gdl) { Mtxf sp110; Mtxf spd0; Mtxf sp90; Mtxf sp50; Mtx *sp4c; Mtx *sp48; u16 sp46; guPerspectiveF(sp110.m, &sp46, g_ViBackData->fovy, g_ViBackData->aspect, g_ViBackData->znear, g_ViBackData->zfar + g_ViBackData->zfar, 1); mtx4Copy(camGetWorldToScreenMtxf(), &sp90); sp90.m[3][0] = 0; sp90.m[3][1] = 0; sp90.m[3][2] = 0; mtx4MultMtx4(&sp110, &sp90, &spd0); sp4c = gfxAllocateMatrix(); guMtxF2L(spd0.m, sp4c); mtx4LoadIdentity(&sp50); sp48 = gfxAllocateMatrix(); guMtxF2L(sp50.m, sp48); gSPMatrix(gdl++, OS_K0_TO_PHYSICAL(sp4c), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPMatrix(gdl++, OS_K0_TO_PHYSICAL(sp48), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPPerspNormalize(gdl++, sp46); return gdl; } Gfx *vi0000aca4(Gfx *gdl, f32 znear, f32 zfar) { u16 scale; Mtxf tmp; Mtx *mtx = gfxAllocateMatrix(); guPerspectiveF(tmp.m, &scale, g_ViBackData->fovy, g_ViBackData->aspect, znear, zfar, 1); guMtxF2L(tmp.m, mtx); gSPMatrix(gdl++, OS_K0_TO_PHYSICAL(mtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPPerspNormalize(gdl++, scale); return gdl; } Gfx *vi0000ad5c(Gfx *gdl, Vp *vp) { vp[g_ViBackIndex].vp.vscale[0] = g_ViBackData->viewx * 2; vp[g_ViBackIndex].vp.vtrans[0] = g_ViBackData->viewx * 2 + g_ViBackData->viewleft * 4; vp[g_ViBackIndex].vp.vscale[1] = g_ViBackData->viewy * 2; vp[g_ViBackIndex].vp.vtrans[1] = g_ViBackData->viewy * 2 + g_ViBackData->viewtop * 4; gSPViewport(gdl++, OS_K0_TO_PHYSICAL(&vp[g_ViBackIndex])); var80092870 = gfxAllocateMatrix(); guPerspectiveF(var80092830.m, &g_ViPerspScale, g_ViBackData->fovy, g_ViBackData->aspect, g_ViBackData->znear, g_ViBackData->zfar, 1); guMtxF2L(var80092830.m, var80092870); gSPMatrix(gdl++, OS_K0_TO_PHYSICAL(var80092870), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPPerspNormalize(gdl++, g_ViPerspScale); camSetPerspectiveMtxL(var80092870); camSetMtxF1754(&var80092830); return gdl; } Gfx *vi0000af00(Gfx *gdl, Vp *vp) { vp[g_ViBackIndex].vp.vscale[0] = g_ViBackData->viewx * 2; vp[g_ViBackIndex].vp.vtrans[0] = g_ViBackData->viewx * 2 + g_ViBackData->viewleft * 4; vp[g_ViBackIndex].vp.vscale[1] = g_ViBackData->viewy * 2; vp[g_ViBackIndex].vp.vtrans[1] = g_ViBackData->viewy * 2 + g_ViBackData->viewtop * 4; vp[g_ViBackIndex].vp.vscale[2] = 511; vp[g_ViBackIndex].vp.vtrans[2] = 511; vp[g_ViBackIndex].vp.vscale[3] = 0; vp[g_ViBackIndex].vp.vtrans[3] = 0; gSPViewport(gdl++, OS_K0_TO_PHYSICAL(&vp[g_ViBackIndex])); var80092870 = gfxAllocateMatrix(); guPerspectiveF(var80092830.m, &g_ViPerspScale, g_ViBackData->fovy, g_ViBackData->aspect, g_ViBackData->znear, g_ViBackData->zfar, 1); guMtxF2L(var80092830.m, var80092870); gSPMatrix(gdl++, OS_K0_TO_PHYSICAL(var80092870), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPPerspNormalize(gdl++, g_ViPerspScale); camSetPerspectiveMtxL(var80092870); camSetMtxF1754(&var80092830); return gdl; } Gfx *vi0000b0e8(Gfx *gdl, f32 fovy, f32 aspect) { Mtxf tmp; Mtx *mtx = gfxAllocateMatrix(); guPerspectiveF(tmp.m, &g_ViPerspScale, fovy, aspect, g_ViBackData->znear, g_ViBackData->zfar, 1); guMtxF2L(tmp.m, mtx); gSPMatrix(gdl++, OS_K0_TO_PHYSICAL(mtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPPerspNormalize(gdl++, g_ViPerspScale); return gdl; } Gfx *vi0000b1a8(Gfx *gdl) { return vi0000ad5c(gdl, &g_Vars.currentplayer->viewport[0]); } Gfx *vi0000b1d0(Gfx *gdl) { gdl = vi0000b1a8(gdl); if (g_ViIs16Bit) { gDPSetColorImage(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_16b, g_ViBackData->bufx, OS_K0_TO_PHYSICAL(g_ViBackData->fb)); } else { gDPSetColorImage(gdl++, G_IM_FMT_RGBA, G_IM_SIZ_32b, g_ViBackData->bufx, OS_K0_TO_PHYSICAL(g_FrameBuffers[0])); } return gdl; } Gfx *vi0000b280(Gfx *gdl) { if (g_ViBackData->usezbuf) { gdl = mblur0f1762ac(gdl); gdl = mblur0f1763f4(gdl); } return gdl; } Gfx *viFillBuffer(Gfx *gdl) { gDPSetCycleType(gdl++, G_CYC_FILL); gDPFillRectangle(gdl++, 0, 0, g_ViBackData->bufx - 1, g_ViBackData->bufy - 1); gDPPipeSync(gdl++); return gdl; } Gfx *viRenderViewportEdges(Gfx *gdl) { gDPSetCycleType(gdl++, G_CYC_FILL); gDPSetScissor(gdl++, G_SC_NON_INTERLACE, 0, 0, viGetWidth(), viGetHeight()); gDPSetFillColor(gdl++, GPACK_RGBA5551(0, 0, 0, 1) << 16 | GPACK_RGBA5551(0, 0, 0, 1)); #if VERSION >= VERSION_NTSC_1_0 if (PLAYERCOUNT() == 1 || ((g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0) && playerHasSharedViewport() && g_Vars.currentplayernum == 0)) #else if (PLAYERCOUNT() == 1 || ((g_Vars.coopplayernum >= 0 || g_Vars.antiplayernum >= 0) && ( (g_InCutscene && !g_MainIsEndscreen) || menuGetRoot() == MENUROOT_COOPCONTINUE ) && g_Vars.currentplayernum == 0)) #endif { // Single viewport if (viGetViewTop() > 0) { // Fill above gDPFillRectangle(gdl++, 0, 0, viGetWidth() - 1, viGetViewTop() - 1); gDPPipeSync(gdl++); } if (viGetViewTop() + viGetViewHeight() < viGetHeight()) { // Fill below gDPFillRectangle(gdl++, 0, viGetViewTop() + viGetViewHeight(), viGetWidth() - 1, viGetHeight() - 1); gDPPipeSync(gdl++); } } else { if (g_Vars.currentplayerindex == 0) { s32 topplayernum = 0; s32 bottomplayernum = 0; s32 tmpplayernum = 0; if (PLAYERCOUNT() == 2) { bottomplayernum = 1; tmpplayernum = 1; } else if (PLAYERCOUNT() >= 3) { bottomplayernum = 2; tmpplayernum = 2; } if (g_Vars.players[topplayernum]->viewtop > 0) { // Fill above all viewports - full width gDPFillRectangle(gdl++, 0, 0, viGetWidth() - 1, g_Vars.players[topplayernum]->viewtop - 1); gDPPipeSync(gdl++); } if (g_Vars.players[bottomplayernum]->viewtop + g_Vars.players[bottomplayernum]->viewheight < viGetHeight()) { // Fill below all viewports - full width gDPFillRectangle(gdl++, 0, g_Vars.players[bottomplayernum]->viewtop + g_Vars.players[bottomplayernum]->viewheight, viGetWidth() - 1, viGetHeight() - 1); gDPPipeSync(gdl++); } // Horizontal middle line gDPFillRectangle(gdl++, 0, g_Vars.players[tmpplayernum]->viewtop - 1, viGetWidth() - 1, g_Vars.players[tmpplayernum]->viewtop - 1); gDPPipeSync(gdl++); if (PLAYERCOUNT() >= 3 || (PLAYERCOUNT() == 2 && (optionsGetScreenSplit() == SCREENSPLIT_VERTICAL || g_Vars.fourmeg2player))) { if (PLAYERCOUNT() == 2) { tmpplayernum = 0; } // Vertical middle line gDPFillRectangle(gdl++, g_Vars.players[tmpplayernum]->viewleft + g_Vars.players[tmpplayernum]->viewwidth, 0, g_Vars.players[tmpplayernum]->viewleft + g_Vars.players[tmpplayernum]->viewwidth, viGetHeight() - 1); gDPPipeSync(gdl++); } if (PLAYERCOUNT() == 3) { // Blank square in P4 spot gDPFillRectangle(gdl++, g_Vars.players[tmpplayernum]->viewleft + g_Vars.players[tmpplayernum]->viewwidth + 1, g_Vars.players[tmpplayernum]->viewtop, viGetWidth() - 1, viGetHeight() - 1); gDPPipeSync(gdl++); } } } return gdl; } #if VERSION < VERSION_NTSC_1_0 void vi0000bd44nb(s32 arg0) { var8005d58c = arg0; } s32 vi0000bd50nb(void) { return var8005d58c; } void vi0000bd5cnb(s32 arg0) { var8005d588 = arg0; } s32 vi0000bd68nb(void) { return var8005d588; } #endif void viSetBufSize(s16 width, s16 height) { g_ViBackData->bufx = width; g_ViBackData->bufy = height; } s16 viGetBufWidth(void) { return g_ViBackData->bufx; } s16 viGetBufHeight(void) { return g_ViBackData->bufy; } void viSetSize(s16 width, s16 height) { g_ViBackData->x = width; g_ViBackData->y = height; } s16 viGetWidth(void) { return g_ViBackData->x; } s16 viGetHeight(void) { return g_ViBackData->y; } void viSetViewSize(s16 width, s16 height) { g_ViBackData->viewx = width; g_ViBackData->viewy = height; camSetScreenSize(g_ViBackData->viewx, g_ViBackData->viewy); camSetScale(); } s16 viGetViewWidth(void) { return g_ViBackData->viewx; } s16 viGetViewHeight(void) { return g_ViBackData->viewy; } void viSetViewPosition(s16 left, s16 top) { g_ViBackData->viewleft = left; g_ViBackData->viewtop = top; camSetScreenPosition(g_ViBackData->viewleft, g_ViBackData->viewtop); } s16 viGetViewLeft(void) { return g_ViBackData->viewleft; } s16 viGetViewTop(void) { return g_ViBackData->viewtop; } void viSetUseZBuf(bool use) { g_ViBackData->usezbuf = use; } void viSetFovY(f32 fovy) { g_ViBackData->fovy = fovy; camSetPerspective(g_ViBackData->znear, g_ViBackData->fovy, g_ViBackData->aspect); camSetScale(); } void viSetAspect(f32 aspect) { g_ViBackData->aspect = aspect; camSetPerspective(g_ViBackData->znear, g_ViBackData->fovy, g_ViBackData->aspect); camSetScale(); } f32 viGetAspect(void) { return g_ViBackData->aspect; } void viSetFovAspectAndSize(f32 fovy, f32 aspect, s16 width, s16 height) { g_ViBackData->fovy = fovy; g_ViBackData->aspect = aspect; g_ViBackData->viewx = width; g_ViBackData->viewy = height; camSetScreenSize(g_ViBackData->viewx, g_ViBackData->viewy); camSetPerspective(g_ViBackData->znear, g_ViBackData->fovy, g_ViBackData->aspect); camSetScale(); } f32 viGetFovY(void) { return g_ViBackData->fovy; } void viSetZRange(f32 near, f32 far) { g_ViBackData->znear = near; g_ViBackData->zfar = far; camSetPerspective(g_ViBackData->znear, g_ViBackData->fovy, g_ViBackData->aspect); camSetScale(); } void viGetZRange(struct zrange *zrange) { zrange->near = g_ViBackData->znear; zrange->far = g_ViBackData->zfar; } Gfx *viSetFillColour(Gfx *gdl, s32 r, s32 g, s32 b) { if (g_ViIs16Bit) { gDPSetFillColor(gdl++, (GPACK_RGBA5551(r, g, b, 1) << 16) | GPACK_RGBA5551(r, g, b, 1)); } else { gDPSetFillColor(gdl++, r << 24 | g << 16 | b << 8 | 0xff); } return gdl; } void viGrabJpg16(void) { // empty } void viGrabJpg32(void) { // empty } void viGrabRgb16(void) { // empty } void viGrabRgb32(void) { // empty }