#include #include "boot/boot.h" #include "constants.h" #include "game/data/data_000000.h" #include "game/data/data_0083d0.h" #include "game/data/data_00e460.h" #include "game/data/data_0160b0.h" #include "game/data/data_01a3a0.h" #include "game/data/data_020df0.h" #include "game/data/data_02da90.h" #include "gvars/gvars.h" #include "lib/lib_074f0.h" #include "lib/lib_0d0a0.h" #include "lib/lib_48150.h" #include "lib/lib_4d6f0.h" #include "types.h" GLOBAL_ASM( glabel func000070d0 /* 70d0: 27bdeb58 */ addiu $sp,$sp,-5288 /* 70d4: afb0001c */ sw $s0,0x1c($sp) /* 70d8: 24100001 */ addiu $s0,$zero,0x1 /* 70dc: afbf003c */ sw $ra,0x3c($sp) /* 70e0: 3c018009 */ lui $at,%hi(var8008ae28) /* 70e4: afb70038 */ sw $s7,0x38($sp) /* 70e8: afb60034 */ sw $s6,0x34($sp) /* 70ec: afb50030 */ sw $s5,0x30($sp) /* 70f0: afb4002c */ sw $s4,0x2c($sp) /* 70f4: afb30028 */ sw $s3,0x28($sp) /* 70f8: afb20024 */ sw $s2,0x24($sp) /* 70fc: afb10020 */ sw $s1,0x20($sp) /* 7100: 0c00222c */ jal func000088b0 /* 7104: a030ae28 */ sb $s0,%lo(var8008ae28)($at) /* 7108: 0c0005b0 */ jal osGetMemSize /* 710c: 00000000 */ nop /* 7110: 3c010040 */ lui $at,0x40 /* 7114: 34210001 */ ori $at,$at,0x1 /* 7118: 0041082a */ slt $at,$v0,$at /* 711c: 10200074 */ beqz $at,.L000072f0 /* 7120: 3c087f1c */ lui $t0,%hi(_gameSegmentEnd) /* 7124: 3c087f1c */ lui $t0,%hi(_gameSegmentEnd) /* 7128: 3c097f00 */ lui $t1,%hi(func0f000000) /* 712c: 25290000 */ addiu $t1,$t1,%lo(func0f000000) /* 7130: 250899e0 */ addiu $t0,$t0,%lo(_gameSegmentEnd) /* 7134: 3c018009 */ lui $at,%hi(g_Is4Mb) /* 7138: 01097023 */ subu $t6,$t0,$t1 /* 713c: a0300af0 */ sb $s0,%lo(g_Is4Mb)($at) /* 7140: 25cf0fff */ addiu $t7,$t6,0xfff /* 7144: 3c178006 */ lui $s7,%hi(var8005cf84) /* 7148: 26f7cf84 */ addiu $s7,$s7,%lo(var8005cf84) /* 714c: 3c07803f */ lui $a3,0x803f /* 7150: 01091023 */ subu $v0,$t0,$t1 /* 7154: 34e750b8 */ ori $a3,$a3,0x50b8 /* 7158: 24420fff */ addiu $v0,$v0,0xfff /* 715c: 00027302 */ srl $t6,$v0,0xc /* 7160: 25c60002 */ addiu $a2,$t6,0x2 /* 7164: 3c158009 */ lui $s5,%hi(var8008ae30) /* 7168: 25d60001 */ addiu $s6,$t6,0x1 /* 716c: 3c120005 */ lui $s2,%hi(_gamezipSegmentRomStart) /* 7170: 26b5ae30 */ addiu $s5,$s5,%lo(var8008ae30) /* 7174: 05e10003 */ bgez $t7,.L00007184 /* 7178: 000fc303 */ sra $t8,$t7,0xc /* 717c: 25e10fff */ addiu $at,$t7,0xfff /* 7180: 0001c303 */ sra $t8,$at,0xc .L00007184: /* 7184: 3c017f00 */ lui $at,0x7f00 /* 7188: 0018cb00 */ sll $t9,$t8,0xc /* 718c: 03216021 */ addu $t4,$t9,$at /* 7190: aef80000 */ sw $t8,0x0($s7) /* 7194: 3c018009 */ lui $at,%hi(var80090b04) /* 7198: ac2c0b04 */ sw $t4,%lo(var80090b04)($at) /* 719c: 3c018009 */ lui $at,%hi(var80090b08) /* 71a0: 001868c0 */ sll $t5,$t8,0x3 /* 71a4: ac270b08 */ sw $a3,%lo(var80090b08)($at) /* 71a8: 00ed9823 */ subu $s3,$a3,$t5 /* 71ac: 3c018009 */ lui $at,%hi(var8008ae24) /* 71b0: 25cf0005 */ addiu $t7,$t6,0x5 /* 71b4: ac33ae24 */ sw $s3,%lo(var8008ae24)($at) /* 71b8: 000fc080 */ sll $t8,$t7,0x2 /* 71bc: 00066880 */ sll $t5,$a2,0x2 /* 71c0: 0278c823 */ subu $t9,$s3,$t8 /* 71c4: 2401fff0 */ addiu $at,$zero,-16 /* 71c8: 25a6000f */ addiu $a2,$t5,0xf /* 71cc: 03212024 */ and $a0,$t9,$at /* 71d0: 34ce000f */ ori $t6,$a2,0xf /* 71d4: 2652fc40 */ addiu $s2,$s2,%lo(_gamezipSegmentRomStart) /* 71d8: 02c0a025 */ or $s4,$s6,$zero /* 71dc: aea40000 */ sw $a0,0x0($s5) /* 71e0: 02402825 */ or $a1,$s2,$zero /* 71e4: 0c003504 */ jal func0000d410 /* 71e8: 39c6000f */ xori $a2,$t6,0xf /* 71ec: 240bfff0 */ addiu $t3,$zero,-16 /* 71f0: 12c0000c */ beqz $s6,.L00007224 /* 71f4: 00008025 */ or $s0,$zero,$zero /* 71f8: 00001825 */ or $v1,$zero,$zero .L000071fc: /* 71fc: 8eb80000 */ lw $t8,0x0($s5) /* 7200: 26100001 */ addiu $s0,$s0,0x1 /* 7204: 0214082b */ sltu $at,$s0,$s4 /* 7208: 03031021 */ addu $v0,$t8,$v1 /* 720c: 8c590000 */ lw $t9,0x0($v0) /* 7210: 24630004 */ addiu $v1,$v1,0x4 /* 7214: 03326021 */ addu $t4,$t9,$s2 /* 7218: 1420fff8 */ bnez $at,.L000071fc /* 721c: ac4c0000 */ sw $t4,0x0($v0) /* 7220: 00008025 */ or $s0,$zero,$zero .L00007224: /* 7224: 26cdffff */ addiu $t5,$s6,-1 /* 7228: 11a0000e */ beqz $t5,.L00007264 /* 722c: 00008825 */ or $s1,$zero,$zero /* 7230: 8ea20000 */ lw $v0,0x0($s5) /* 7234: 2684ffff */ addiu $a0,$s4,-1 .L00007238: /* 7238: 8c4e0004 */ lw $t6,0x4($v0) /* 723c: 8c4f0000 */ lw $t7,0x0($v0) /* 7240: 26100001 */ addiu $s0,$s0,0x1 /* 7244: 01cf1823 */ subu $v1,$t6,$t7 /* 7248: 0223082b */ sltu $at,$s1,$v1 /* 724c: 50200003 */ beqzl $at,.L0000725c /* 7250: 0204082b */ sltu $at,$s0,$a0 /* 7254: 00608825 */ or $s1,$v1,$zero /* 7258: 0204082b */ sltu $at,$s0,$a0 .L0000725c: /* 725c: 1420fff6 */ bnez $at,.L00007238 /* 7260: 24420004 */ addiu $v0,$v0,0x4 .L00007264: /* 7264: 8eb80000 */ lw $t8,0x0($s5) /* 7268: 26310040 */ addiu $s1,$s1,0x40 /* 726c: 022b8824 */ and $s1,$s1,$t3 /* 7270: 3c01ffef */ lui $at,0xffef /* 7274: 0311c823 */ subu $t9,$t8,$s1 /* 7278: 032b6824 */ and $t5,$t9,$t3 /* 727c: 34214000 */ ori $at,$at,0x4000 /* 7280: 3c028009 */ lui $v0,%hi(var8008ae2c) /* 7284: 01a19821 */ addu $s3,$t5,$at /* 7288: 2442ae2c */ addiu $v0,$v0,%lo(var8008ae2c) /* 728c: ac590000 */ sw $t9,0x0($v0) /* 7290: 326e1fff */ andi $t6,$s3,0x1fff /* 7294: ac4d0000 */ sw $t5,0x0($v0) /* 7298: 026e9823 */ subu $s3,$s3,$t6 /* 729c: 3c018009 */ lui $at,%hi(var8008ae20) /* 72a0: ac33ae20 */ sw $s3,%lo(var8008ae20)($at) /* 72a4: 3c018009 */ lui $at,%hi(var80090b00) /* 72a8: 0c000429 */ jal func000010a4 /* 72ac: ac330b00 */ sw $s3,%lo(var80090b00)($at) /* 72b0: 8ee30000 */ lw $v1,0x0($s7) /* 72b4: 3c048009 */ lui $a0,%hi(var8008ae24) /* 72b8: 8c84ae24 */ lw $a0,%lo(var8008ae24)($a0) /* 72bc: 000378c0 */ sll $t7,$v1,0x3 /* 72c0: 000f1883 */ sra $v1,$t7,0x2 /* 72c4: 18600006 */ blez $v1,.L000072e0 /* 72c8: 00008825 */ or $s1,$zero,$zero /* 72cc: 00801025 */ or $v0,$a0,$zero .L000072d0: /* 72d0: 26310001 */ addiu $s1,$s1,0x1 /* 72d4: 24420004 */ addiu $v0,$v0,0x4 /* 72d8: 1623fffd */ bne $s1,$v1,.L000072d0 /* 72dc: ac40fffc */ sw $zero,-0x4($v0) .L000072e0: /* 72e0: 0c00044f */ jal func0000113c /* 72e4: 00000000 */ nop /* 72e8: 1000006a */ b .L00007494 /* 72ec: 00000000 */ nop .L000072f0: /* 72f0: 3c097f00 */ lui $t1,%hi(func0f000000) /* 72f4: 25290000 */ addiu $t1,$t1,%lo(func0f000000) /* 72f8: 250899e0 */ addiu $t0,$t0,%lo(_gameSegmentEnd) /* 72fc: 0109c823 */ subu $t9,$t0,$t1 /* 7300: 272c003f */ addiu $t4,$t9,0x3f /* 7304: 01091023 */ subu $v0,$t0,$t1 /* 7308: 3c0a803f */ lui $t2,0x803f /* 730c: 358d003f */ ori $t5,$t4,0x3f /* 7310: 24420fff */ addiu $v0,$v0,0xfff /* 7314: 355750b8 */ ori $s7,$t2,0x50b8 /* 7318: 3c018009 */ lui $at,%hi(g_Is4Mb) /* 731c: 39ae003f */ xori $t6,$t5,0x3f /* 7320: 0002c302 */ srl $t8,$v0,0xc /* 7324: a0200af0 */ sb $zero,%lo(g_Is4Mb)($at) /* 7328: 02ee3823 */ subu $a3,$s7,$t6 /* 732c: 3c01fffe */ lui $at,0xfffe /* 7330: 27190005 */ addiu $t9,$t8,0x5 /* 7334: 27060002 */ addiu $a2,$t8,0x2 /* 7338: 00e19824 */ and $s3,$a3,$at /* 733c: 00067080 */ sll $t6,$a2,0x2 /* 7340: 00196080 */ sll $t4,$t9,0x2 /* 7344: 240bfff0 */ addiu $t3,$zero,-16 /* 7348: 026c6823 */ subu $t5,$s3,$t4 /* 734c: 25c6000f */ addiu $a2,$t6,0xf /* 7350: 3c120005 */ lui $s2,%hi(_gamezipSegmentRomStart) /* 7354: 3c018009 */ lui $at,%hi(var80090b00) /* 7358: 27160001 */ addiu $s6,$t8,0x1 /* 735c: 2652fc40 */ addiu $s2,$s2,%lo(_gamezipSegmentRomStart) /* 7360: 34cf000f */ ori $t7,$a2,0xf /* 7364: 01aba824 */ and $s5,$t5,$t3 /* 7368: ac330b00 */ sw $s3,%lo(var80090b00)($at) /* 736c: 02a02025 */ or $a0,$s5,$zero /* 7370: 39e6000f */ xori $a2,$t7,0xf /* 7374: 02402825 */ or $a1,$s2,$zero /* 7378: afb61474 */ sw $s6,0x1474($sp) /* 737c: 0c003504 */ jal func0000d410 /* 7380: afb30054 */ sw $s3,0x54($sp) /* 7384: 8fa31474 */ lw $v1,0x1474($sp) /* 7388: 12c0000b */ beqz $s6,.L000073b8 /* 738c: 00008025 */ or $s0,$zero,$zero /* 7390: 00008825 */ or $s1,$zero,$zero .L00007394: /* 7394: 02b11021 */ addu $v0,$s5,$s1 /* 7398: 8c590000 */ lw $t9,0x0($v0) /* 739c: 26100001 */ addiu $s0,$s0,0x1 /* 73a0: 0203082b */ sltu $at,$s0,$v1 /* 73a4: 03326021 */ addu $t4,$t9,$s2 /* 73a8: ac4c0000 */ sw $t4,0x0($v0) /* 73ac: 1420fff9 */ bnez $at,.L00007394 /* 73b0: 26310004 */ addiu $s1,$s1,0x4 /* 73b4: 00008025 */ or $s0,$zero,$zero .L000073b8: /* 73b8: 26cdffff */ addiu $t5,$s6,-1 /* 73bc: 11a00018 */ beqz $t5,.L00007420 /* 73c0: 8fb20054 */ lw $s2,0x54($sp) /* 73c4: 26b4e000 */ addiu $s4,$s5,-8192 /* 73c8: 268e0002 */ addiu $t6,$s4,0x2 /* 73cc: afae0048 */ sw $t6,0x48($sp) /* 73d0: 00008825 */ or $s1,$zero,$zero /* 73d4: 2476ffff */ addiu $s6,$v1,-1 .L000073d8: /* 73d8: 02b11021 */ addu $v0,$s5,$s1 /* 73dc: 8c450000 */ lw $a1,0x0($v0) /* 73e0: 8c4f0004 */ lw $t7,0x4($v0) /* 73e4: 02802025 */ or $a0,$s4,$zero /* 73e8: 01e53023 */ subu $a2,$t7,$a1 /* 73ec: 24c6000f */ addiu $a2,$a2,0xf /* 73f0: 34d8000f */ ori $t8,$a2,0xf /* 73f4: 0c003504 */ jal func0000d410 /* 73f8: 3b06000f */ xori $a2,$t8,0xf /* 73fc: 8fa40048 */ lw $a0,0x48($sp) /* 7400: 02402825 */ or $a1,$s2,$zero /* 7404: 0c001d3c */ jal func000074f0 /* 7408: 27a60068 */ addiu $a2,$sp,0x68 /* 740c: 26100001 */ addiu $s0,$s0,0x1 /* 7410: 0216082b */ sltu $at,$s0,$s6 /* 7414: 02429021 */ addu $s2,$s2,$v0 /* 7418: 1420ffef */ bnez $at,.L000073d8 /* 741c: 26310004 */ addiu $s1,$s1,0x4 .L00007420: /* 7420: 8fac0054 */ lw $t4,0x54($sp) /* 7424: 3c01803f */ lui $at,0x803f /* 7428: 342150b9 */ ori $at,$at,0x50b9 /* 742c: 0181082b */ sltu $at,$t4,$at /* 7430: 3c117f00 */ lui $s1,0x7f00 /* 7434: 10200017 */ beqz $at,.L00007494 /* 7438: 24100002 */ addiu $s0,$zero,0x2 /* 743c: 3c160001 */ lui $s6,0x1 /* 7440: 36d6e000 */ ori $s6,$s6,0xe000 /* 7444: 3c150001 */ lui $s5,0x1 /* 7448: 3c140002 */ lui $s4,0x2 .L0000744c: /* 744c: 0c012d20 */ jal osVirtualToPhysical /* 7450: 02602025 */ or $a0,$s3,$zero /* 7454: 00409025 */ or $s2,$v0,$zero /* 7458: 0c012d20 */ jal osVirtualToPhysical /* 745c: 02752021 */ addu $a0,$s3,$s5 /* 7460: 240dffff */ addiu $t5,$zero,-1 /* 7464: afad0014 */ sw $t5,0x14($sp) /* 7468: 02002025 */ or $a0,$s0,$zero /* 746c: 02c02825 */ or $a1,$s6,$zero /* 7470: 02203025 */ or $a2,$s1,$zero /* 7474: 02403825 */ or $a3,$s2,$zero /* 7478: 0c01386c */ jal osMapTLB /* 747c: afa20010 */ sw $v0,0x10($sp) /* 7480: 02749821 */ addu $s3,$s3,$s4 /* 7484: 02f3082b */ sltu $at,$s7,$s3 /* 7488: 02348821 */ addu $s1,$s1,$s4 /* 748c: 1020ffef */ beqz $at,.L0000744c /* 7490: 26100001 */ addiu $s0,$s0,0x1 .L00007494: /* 7494: 3c018009 */ lui $at,%hi(var80090af4) /* 7498: ac200af4 */ sw $zero,%lo(var80090af4)($at) /* 749c: 3c018009 */ lui $at,%hi(var80090af8) /* 74a0: ac200af8 */ sw $zero,%lo(var80090af8)($at) /* 74a4: 3c018009 */ lui $at,%hi(var80090afc) /* 74a8: ac200afc */ sw $zero,%lo(var80090afc)($at) /* 74ac: 00002025 */ or $a0,$zero,$zero /* 74b0: 0c012054 */ jal osInvalICache /* 74b4: 24054000 */ addiu $a1,$zero,0x4000 /* 74b8: 8fbf003c */ lw $ra,0x3c($sp) /* 74bc: 8fb0001c */ lw $s0,0x1c($sp) /* 74c0: 8fb10020 */ lw $s1,0x20($sp) /* 74c4: 8fb20024 */ lw $s2,0x24($sp) /* 74c8: 8fb30028 */ lw $s3,0x28($sp) /* 74cc: 8fb4002c */ lw $s4,0x2c($sp) /* 74d0: 8fb50030 */ lw $s5,0x30($sp) /* 74d4: 8fb60034 */ lw $s6,0x34($sp) /* 74d8: 8fb70038 */ lw $s7,0x38($sp) /* 74dc: 03e00008 */ jr $ra /* 74e0: 27bd14a8 */ addiu $sp,$sp,0x14a8 /* 74e4: 00000000 */ nop /* 74e8: 00000000 */ nop /* 74ec: 00000000 */ nop );