Decompile chrDisfigure

This commit is contained in:
Ryan Dwyer
2021-12-19 11:16:40 +10:00
parent 57dae70981
commit c24c3ade55
10 changed files with 243 additions and 592 deletions
+199 -549
View File
@@ -8974,7 +8974,7 @@ glabel chr0f0260c4
/* f02666c: 96440016 */ lhu $a0,0x16($s2)
/* f026670: 24050002 */ addiu $a1,$zero,0x2
/* f026674: 00003025 */ or $a2,$zero,$zero
/* f026678: 0fc4a557 */ jal func0f12955c
/* f026678: 0fc4a557 */ jal vtxstoreAllocate
/* f02667c: 00003825 */ or $a3,$zero,$zero
/* f026680: 50400020 */ beqzl $v0,.L0f026704
/* f026684: 864d0010 */ lh $t5,0x10($s2)
@@ -9605,7 +9605,7 @@ glabel var7f1a8944
/* f026ed4: 96440016 */ lhu $a0,0x16($s2)
/* f026ed8: 24050002 */ addiu $a1,$zero,0x2
/* f026edc: 00003025 */ or $a2,$zero,$zero
/* f026ee0: 0fc4a557 */ jal func0f12955c
/* f026ee0: 0fc4a557 */ jal vtxstoreAllocate
/* f026ee4: 00003825 */ or $a3,$zero,$zero
/* f026ee8: 50400014 */ beqzl $v0,.L0f026f3c
/* f026eec: 86590010 */ lh $t9,0x10($s2)
@@ -9757,553 +9757,203 @@ glabel var7f1a8944
/* f0270f0: 27bd0120 */ addiu $sp,$sp,0x120
);
GLOBAL_ASM(
glabel chr0f0270f4
/* f0270f4: 27bdff58 */ addiu $sp,$sp,-168
/* f0270f8: afbf003c */ sw $ra,0x3c($sp)
/* f0270fc: afbe0038 */ sw $s8,0x38($sp)
/* f027100: afb70034 */ sw $s7,0x34($sp)
/* f027104: afb60030 */ sw $s6,0x30($sp)
/* f027108: afb5002c */ sw $s5,0x2c($sp)
/* f02710c: afb40028 */ sw $s4,0x28($sp)
/* f027110: afb30024 */ sw $s3,0x24($sp)
/* f027114: afb20020 */ sw $s2,0x20($sp)
/* f027118: afb1001c */ sw $s1,0x1c($sp)
/* f02711c: afb00018 */ sw $s0,0x18($sp)
/* f027120: afa500ac */ sw $a1,0xac($sp)
/* f027124: afa600b0 */ sw $a2,0xb0($sp)
/* f027128: 8c8e0020 */ lw $t6,0x20($a0)
/* f02712c: 00808025 */ or $s0,$a0,$zero
/* f027130: afa00080 */ sw $zero,0x80($sp)
/* f027134: 0c004b70 */ jal random
/* f027138: afae0094 */ sw $t6,0x94($sp)
/* f02713c: 3c0f800a */ lui $t7,%hi(g_Vars+0x314)
/* f027140: 8defa2d4 */ lw $t7,%lo(g_Vars+0x314)($t7)
/* f027144: 0040f025 */ or $s8,$v0,$zero
/* f027148: 55e001cb */ bnezl $t7,.L0f027878
/* f02714c: 8fbf003c */ lw $ra,0x3c($sp)
/* f027150: 0fc0e6a5 */ jal chrIsDead
/* f027154: 02002025 */ or $a0,$s0,$zero
/* f027158: 104001c6 */ beqz $v0,.L0f027874
/* f02715c: 8fa40094 */ lw $a0,0x94($sp)
/* f027160: 8c980008 */ lw $t8,0x8($a0)
/* f027164: 24170003 */ addiu $s7,$zero,0x3
/* f027168: 24160005 */ addiu $s6,$zero,0x5
/* f02716c: 8f050000 */ lw $a1,0x0($t8)
/* f027170: 24120014 */ addiu $s2,$zero,0x14
/* f027174: 50a001c0 */ beqzl $a1,.L0f027878
/* f027178: 8fbf003c */ lw $ra,0x3c($sp)
/* f02717c: 94a20000 */ lhu $v0,0x0($a1)
.L0f027180:
/* f027180: 24010008 */ addiu $at,$zero,0x8
/* f027184: 305900ff */ andi $t9,$v0,0xff
/* f027188: 13210199 */ beq $t9,$at,.L0f0277f0
/* f02718c: 24010012 */ addiu $at,$zero,0x12
/* f027190: 1321019d */ beq $t9,$at,.L0f027808
/* f027194: 24010017 */ addiu $at,$zero,0x17
/* f027198: 132101a1 */ beq $t9,$at,.L0f027820
/* f02719c: 24010018 */ addiu $at,$zero,0x18
/* f0271a0: 53210004 */ beql $t9,$at,.L0f0271b4
/* f0271a4: 8ca90004 */ lw $t1,0x4($a1)
/* f0271a8: 100001a2 */ b .L0f027834
/* f0271ac: 8ca20014 */ lw $v0,0x14($a1)
/* f0271b0: 8ca90004 */ lw $t1,0x4($a1)
.L0f0271b4:
/* f0271b4: afa500a4 */ sw $a1,0xa4($sp)
/* f0271b8: 0c006a87 */ jal modelGetNodeRwData
/* f0271bc: afa900a0 */ sw $t1,0xa0($sp)
/* f0271c0: 8c4a0004 */ lw $t2,0x4($v0)
/* f0271c4: 0040a025 */ or $s4,$v0,$zero
/* f0271c8: 8fa800a0 */ lw $t0,0xa0($sp)
/* f0271cc: 15400004 */ bnez $t2,.L0f0271e0
/* f0271d0: 8fa500a4 */ lw $a1,0xa4($sp)
/* f0271d4: 8ca20014 */ lw $v0,0x14($a1)
/* f0271d8: 10000196 */ b .L0f027834
/* f0271dc: 8fa40094 */ lw $a0,0x94($sp)
.L0f0271e0:
/* f0271e0: 8d03000c */ lw $v1,0xc($t0)
/* f0271e4: 8c440000 */ lw $a0,0x0($v0)
/* f0271e8: 5464017e */ bnel $v1,$a0,.L0f0277e4
/* f0271ec: 8fa500a4 */ lw $a1,0xa4($sp)
/* f0271f0: 14640022 */ bne $v1,$a0,.L0f02727c
/* f0271f4: 00002825 */ or $a1,$zero,$zero
/* f0271f8: 85040010 */ lh $a0,0x10($t0)
/* f0271fc: 00003025 */ or $a2,$zero,$zero
/* f027200: 0fc4a557 */ jal func0f12955c
/* f027204: 00003825 */ or $a3,$zero,$zero
/* f027208: 1040001c */ beqz $v0,.L0f02727c
/* f02720c: 8fa500a0 */ lw $a1,0xa0($sp)
/* f027210: 84ac0010 */ lh $t4,0x10($a1)
/* f027214: 00008825 */ or $s1,$zero,$zero
/* f027218: 00001825 */ or $v1,$zero,$zero
/* f02721c: 19800016 */ blez $t4,.L0f027278
/* f027220: 00402025 */ or $a0,$v0,$zero
/* f027224: 8e8d0000 */ lw $t5,0x0($s4)
.L0f027228:
/* f027228: 26310001 */ addiu $s1,$s1,0x1
/* f02722c: 2484000c */ addiu $a0,$a0,0xc
/* f027230: 01a37021 */ addu $t6,$t5,$v1
/* f027234: 89c10000 */ lwl $at,0x0($t6)
/* f027238: 99c10003 */ lwr $at,0x3($t6)
/* f02723c: 2463000c */ addiu $v1,$v1,0xc
/* f027240: a881fff4 */ swl $at,-0xc($a0)
/* f027244: b881fff7 */ swr $at,-0x9($a0)
/* f027248: 89d80004 */ lwl $t8,0x4($t6)
/* f02724c: 99d80007 */ lwr $t8,0x7($t6)
/* f027250: a898fff8 */ swl $t8,-0x8($a0)
/* f027254: b898fffb */ swr $t8,-0x5($a0)
/* f027258: 89c10008 */ lwl $at,0x8($t6)
/* f02725c: 99c1000b */ lwr $at,0xb($t6)
/* f027260: a881fffc */ swl $at,-0x4($a0)
/* f027264: b881ffff */ swr $at,-0x1($a0)
/* f027268: 84b90010 */ lh $t9,0x10($a1)
/* f02726c: 0239082a */ slt $at,$s1,$t9
/* f027270: 5420ffed */ bnezl $at,.L0f027228
/* f027274: 8e8d0000 */ lw $t5,0x0($s4)
.L0f027278:
/* f027278: ae820000 */ sw $v0,0x0($s4)
.L0f02727c:
/* f02727c: 8fa800a0 */ lw $t0,0xa0($sp)
/* f027280: 8e980008 */ lw $t8,0x8($s4)
/* f027284: 24050002 */ addiu $a1,$zero,0x2
/* f027288: 850a0010 */ lh $t2,0x10($t0)
/* f02728c: 8d09000c */ lw $t1,0xc($t0)
/* f027290: 00003025 */ or $a2,$zero,$zero
/* f027294: 000a5880 */ sll $t3,$t2,0x2
/* f027298: 016a5823 */ subu $t3,$t3,$t2
/* f02729c: 000b5880 */ sll $t3,$t3,0x2
/* f0272a0: 012b6021 */ addu $t4,$t1,$t3
/* f0272a4: 258d0007 */ addiu $t5,$t4,0x7
/* f0272a8: 35af0007 */ ori $t7,$t5,0x7
/* f0272ac: 39ee0007 */ xori $t6,$t7,0x7
/* f0272b0: 15d80016 */ bne $t6,$t8,.L0f02730c
/* f0272b4: 00003825 */ or $a3,$zero,$zero
/* f0272b8: 0fc4a557 */ jal func0f12955c
/* f0272bc: 95040016 */ lhu $a0,0x16($t0)
/* f0272c0: 10400012 */ beqz $v0,.L0f02730c
/* f0272c4: 8fa500a0 */ lw $a1,0xa0($sp)
/* f0272c8: 94b90016 */ lhu $t9,0x16($a1)
/* f0272cc: 00008825 */ or $s1,$zero,$zero
/* f0272d0: 00001825 */ or $v1,$zero,$zero
/* f0272d4: 1b20000c */ blez $t9,.L0f027308
/* f0272d8: 00402025 */ or $a0,$v0,$zero
/* f0272dc: 8e8a0008 */ lw $t2,0x8($s4)
.L0f0272e0:
/* f0272e0: 26310001 */ addiu $s1,$s1,0x1
/* f0272e4: 24840004 */ addiu $a0,$a0,0x4
/* f0272e8: 01434821 */ addu $t1,$t2,$v1
/* f0272ec: 8d210000 */ lw $at,0x0($t1)
/* f0272f0: 24630004 */ addiu $v1,$v1,0x4
/* f0272f4: ac81fffc */ sw $at,-0x4($a0)
/* f0272f8: 94ad0016 */ lhu $t5,0x16($a1)
/* f0272fc: 022d082a */ slt $at,$s1,$t5
/* f027300: 5420fff7 */ bnezl $at,.L0f0272e0
/* f027304: 8e8a0008 */ lw $t2,0x8($s4)
.L0f027308:
/* f027308: ae820008 */ sw $v0,0x8($s4)
.L0f02730c:
/* f02730c: 8faf00a0 */ lw $t7,0xa0($sp)
/* f027310: 8e8e0000 */ lw $t6,0x0($s4)
/* f027314: 8de3000c */ lw $v1,0xc($t7)
/* f027318: 506e0132 */ beql $v1,$t6,.L0f0277e4
/* f02731c: 8fa500a4 */ lw $a1,0xa4($sp)
/* f027320: 85f80010 */ lh $t8,0x10($t7)
/* f027324: 8e8d0008 */ lw $t5,0x8($s4)
/* f027328: 0018c880 */ sll $t9,$t8,0x2
/* f02732c: 0338c823 */ subu $t9,$t9,$t8
/* f027330: 0019c880 */ sll $t9,$t9,0x2
/* f027334: 00795021 */ addu $t2,$v1,$t9
/* f027338: 254b0007 */ addiu $t3,$t2,0x7
/* f02733c: 35690007 */ ori $t1,$t3,0x7
/* f027340: 392c0007 */ xori $t4,$t1,0x7
/* f027344: 118d0126 */ beq $t4,$t5,.L0f0277e0
/* f027348: 8fb900a0 */ lw $t9,0xa0($sp)
/* f02734c: 8de20000 */ lw $v0,0x0($t7)
/* f027350: 8e830004 */ lw $v1,0x4($s4)
/* f027354: 00008825 */ or $s1,$zero,$zero
/* f027358: 3c0100ff */ lui $at,0xff
/* f02735c: 14430006 */ bne $v0,$v1,.L0f027378
/* f027360: 0060a825 */ or $s5,$v1,$zero
/* f027364: 8dee0008 */ lw $t6,0x8($t7)
/* f027368: 3421ffff */ ori $at,$at,0xffff
/* f02736c: 0041c024 */ and $t8,$v0,$at
/* f027370: 10000001 */ b .L0f027378
/* f027374: 01d8a821 */ addu $s5,$t6,$t8
.L0f027378:
/* f027378: 8f220004 */ lw $v0,0x4($t9)
/* f02737c: 3c0100ff */ lui $at,0xff
/* f027380: 50400008 */ beqzl $v0,.L0f0273a4
/* f027384: afa00084 */ sw $zero,0x84($sp)
/* f027388: 8f2a0008 */ lw $t2,0x8($t9)
/* f02738c: 3421ffff */ ori $at,$at,0xffff
/* f027390: 00415824 */ and $t3,$v0,$at
/* f027394: 014b4821 */ addu $t1,$t2,$t3
/* f027398: 10000002 */ b .L0f0273a4
/* f02739c: afa90084 */ sw $t1,0x84($sp)
/* f0273a0: afa00084 */ sw $zero,0x84($sp)
.L0f0273a4:
/* f0273a4: 82a20000 */ lb $v0,0x0($s5)
/* f0273a8: 2401ffb8 */ addiu $at,$zero,-72
/* f0273ac: 8fac0084 */ lw $t4,0x84($sp)
/* f0273b0: 54410006 */ bnel $v0,$at,.L0f0273cc
/* f0273b4: 24010004 */ addiu $at,$zero,0x4
/* f0273b8: 118000ee */ beqz $t4,.L0f027774
/* f0273bc: 0180a825 */ or $s5,$t4,$zero
/* f0273c0: 1000fff8 */ b .L0f0273a4
/* f0273c4: afa00084 */ sw $zero,0x84($sp)
/* f0273c8: 24010004 */ addiu $at,$zero,0x4
.L0f0273cc:
/* f0273cc: 144100d9 */ bne $v0,$at,.L0f027734
/* f0273d0: 8fb80080 */ lw $t8,0x80($sp)
/* f0273d4: 8ea20004 */ lw $v0,0x4($s5)
/* f0273d8: 92b30001 */ lbu $s3,0x1($s5)
/* f0273dc: 3c0100ff */ lui $at,0xff
/* f0273e0: 8e8f0000 */ lw $t7,0x0($s4)
/* f0273e4: 3421ffff */ ori $at,$at,0xffff
/* f0273e8: 00416824 */ and $t5,$v0,$at
/* f0273ec: 00137102 */ srl $t6,$s3,0x4
/* f0273f0: 25d30001 */ addiu $s3,$t6,0x1
/* f0273f4: 130000dd */ beqz $t8,.L0f02776c
/* f0273f8: 01ed1821 */ addu $v1,$t7,$t5
/* f0273fc: 1a6000db */ blez $s3,.L0f02776c
/* f027400: 00608025 */ or $s0,$v1,$zero
.L0f027404:
/* f027404: 4459f800 */ cfc1 $t9,$31
/* f027408: 240a0001 */ addiu $t2,$zero,0x1
/* f02740c: 44caf800 */ ctc1 $t2,$31
/* f027410: c7a4007c */ lwc1 $f4,0x7c($sp)
/* f027414: 3c014f00 */ lui $at,0x4f00
/* f027418: 460021a4 */ cvt.w.s $f6,$f4
/* f02741c: 444af800 */ cfc1 $t2,$31
/* f027420: 00000000 */ nop
/* f027424: 314a0078 */ andi $t2,$t2,0x78
/* f027428: 51400013 */ beqzl $t2,.L0f027478
/* f02742c: 440a3000 */ mfc1 $t2,$f6
/* f027430: 44813000 */ mtc1 $at,$f6
/* f027434: 240a0001 */ addiu $t2,$zero,0x1
/* f027438: 46062181 */ sub.s $f6,$f4,$f6
/* f02743c: 44caf800 */ ctc1 $t2,$31
/* f027440: 00000000 */ nop
/* f027444: 460031a4 */ cvt.w.s $f6,$f6
/* f027448: 444af800 */ cfc1 $t2,$31
/* f02744c: 00000000 */ nop
/* f027450: 314a0078 */ andi $t2,$t2,0x78
/* f027454: 15400005 */ bnez $t2,.L0f02746c
/* f027458: 00000000 */ nop
/* f02745c: 440a3000 */ mfc1 $t2,$f6
/* f027460: 3c018000 */ lui $at,0x8000
/* f027464: 10000007 */ b .L0f027484
/* f027468: 01415025 */ or $t2,$t2,$at
.L0f02746c:
/* f02746c: 10000005 */ b .L0f027484
/* f027470: 240affff */ addiu $t2,$zero,-1
/* f027474: 440a3000 */ mfc1 $t2,$f6
.L0f027478:
/* f027478: 00000000 */ nop
/* f02747c: 0540fffb */ bltz $t2,.L0f02746c
/* f027480: 00000000 */ nop
.L0f027484:
/* f027484: 44d9f800 */ ctc1 $t9,$31
/* f027488: 015e5821 */ addu $t3,$t2,$s8
/* f02748c: 240a0001 */ addiu $t2,$zero,0x1
/* f027490: c7a80074 */ lwc1 $f8,0x74($sp)
/* f027494: 4459f800 */ cfc1 $t9,$31
/* f027498: 44caf800 */ ctc1 $t2,$31
/* f02749c: 86090000 */ lh $t1,0x0($s0)
/* f0274a0: 860d0002 */ lh $t5,0x2($s0)
/* f0274a4: 460042a4 */ cvt.w.s $f10,$f8
/* f0274a8: 860e0004 */ lh $t6,0x4($s0)
/* f0274ac: 01696021 */ addu $t4,$t3,$t1
/* f0274b0: 018d7821 */ addu $t7,$t4,$t5
/* f0274b4: 444af800 */ cfc1 $t2,$31
/* f0274b8: 3c014f00 */ lui $at,0x4f00
/* f0274bc: 01eec021 */ addu $t8,$t7,$t6
/* f0274c0: 314a0078 */ andi $t2,$t2,0x78
/* f0274c4: 51400013 */ beqzl $t2,.L0f027514
/* f0274c8: 440a5000 */ mfc1 $t2,$f10
/* f0274cc: 44815000 */ mtc1 $at,$f10
/* f0274d0: 240a0001 */ addiu $t2,$zero,0x1
/* f0274d4: 460a4281 */ sub.s $f10,$f8,$f10
/* f0274d8: 44caf800 */ ctc1 $t2,$31
/* f0274dc: 00000000 */ nop
/* f0274e0: 460052a4 */ cvt.w.s $f10,$f10
/* f0274e4: 444af800 */ cfc1 $t2,$31
/* f0274e8: 00000000 */ nop
/* f0274ec: 314a0078 */ andi $t2,$t2,0x78
/* f0274f0: 15400005 */ bnez $t2,.L0f027508
/* f0274f4: 00000000 */ nop
/* f0274f8: 440a5000 */ mfc1 $t2,$f10
/* f0274fc: 3c018000 */ lui $at,0x8000
/* f027500: 10000007 */ b .L0f027520
/* f027504: 01415025 */ or $t2,$t2,$at
.L0f027508:
/* f027508: 10000005 */ b .L0f027520
/* f02750c: 240affff */ addiu $t2,$zero,-1
/* f027510: 440a5000 */ mfc1 $t2,$f10
.L0f027514:
/* f027514: 00000000 */ nop
/* f027518: 0540fffb */ bltz $t2,.L0f027508
/* f02751c: 00000000 */ nop
.L0f027520:
/* f027520: 44d9f800 */ ctc1 $t9,$31
/* f027524: 240c0001 */ addiu $t4,$zero,0x1
/* f027528: c7b00078 */ lwc1 $f16,0x78($sp)
/* f02752c: 030a5821 */ addu $t3,$t8,$t2
/* f027530: 4449f800 */ cfc1 $t1,$31
/* f027534: 44ccf800 */ ctc1 $t4,$31
/* f027538: 3c014f00 */ lui $at,0x4f00
/* f02753c: 460084a4 */ cvt.w.s $f18,$f16
/* f027540: 444cf800 */ cfc1 $t4,$31
/* f027544: 00000000 */ nop
/* f027548: 318c0078 */ andi $t4,$t4,0x78
/* f02754c: 51800013 */ beqzl $t4,.L0f02759c
/* f027550: 440c9000 */ mfc1 $t4,$f18
/* f027554: 44819000 */ mtc1 $at,$f18
/* f027558: 240c0001 */ addiu $t4,$zero,0x1
/* f02755c: 46128481 */ sub.s $f18,$f16,$f18
/* f027560: 44ccf800 */ ctc1 $t4,$31
/* f027564: 00000000 */ nop
/* f027568: 460094a4 */ cvt.w.s $f18,$f18
/* f02756c: 444cf800 */ cfc1 $t4,$31
/* f027570: 00000000 */ nop
/* f027574: 318c0078 */ andi $t4,$t4,0x78
/* f027578: 15800005 */ bnez $t4,.L0f027590
/* f02757c: 00000000 */ nop
/* f027580: 440c9000 */ mfc1 $t4,$f18
/* f027584: 3c018000 */ lui $at,0x8000
/* f027588: 10000007 */ b .L0f0275a8
/* f02758c: 01816025 */ or $t4,$t4,$at
.L0f027590:
/* f027590: 10000005 */ b .L0f0275a8
/* f027594: 240cffff */ addiu $t4,$zero,-1
/* f027598: 440c9000 */ mfc1 $t4,$f18
.L0f02759c:
/* f02759c: 00000000 */ nop
/* f0275a0: 0580fffb */ bltz $t4,.L0f027590
/* f0275a4: 00000000 */ nop
.L0f0275a8:
/* f0275a8: 44c9f800 */ ctc1 $t1,$31
/* f0275ac: 0fc4a47e */ jal rng2SetSeed
/* f0275b0: 016c2021 */ addu $a0,$t3,$t4
/* f0275b4: 86020000 */ lh $v0,0x0($s0)
/* f0275b8: 1840000e */ blez $v0,.L0f0275f4
/* f0275bc: 00000000 */ nop
/* f0275c0: 0fc4a46c */ jal random2
/* f0275c4: 00000000 */ nop
/* f0275c8: 0052001b */ divu $zero,$v0,$s2
/* f0275cc: 860d0000 */ lh $t5,0x0($s0)
/* f0275d0: 00007810 */ mfhi $t7
/* f0275d4: 000f7400 */ sll $t6,$t7,0x10
/* f0275d8: 000ecc03 */ sra $t9,$t6,0x10
/* f0275dc: 16400002 */ bnez $s2,.L0f0275e8
/* f0275e0: 00000000 */ nop
/* f0275e4: 0007000d */ break 0x7
.L0f0275e8:
/* f0275e8: 01b9c023 */ subu $t8,$t5,$t9
/* f0275ec: 1000000f */ b .L0f02762c
/* f0275f0: a6180000 */ sh $t8,0x0($s0)
.L0f0275f4:
/* f0275f4: 0443000e */ bgezl $v0,.L0f027630
/* f0275f8: 86020002 */ lh $v0,0x2($s0)
/* f0275fc: 0fc4a46c */ jal random2
/* f027600: 00000000 */ nop
/* f027604: 0052001b */ divu $zero,$v0,$s2
/* f027608: 860a0000 */ lh $t2,0x0($s0)
/* f02760c: 00004810 */ mfhi $t1
/* f027610: 00095c00 */ sll $t3,$t1,0x10
/* f027614: 000b6403 */ sra $t4,$t3,0x10
/* f027618: 014c7821 */ addu $t7,$t2,$t4
/* f02761c: a60f0000 */ sh $t7,0x0($s0)
/* f027620: 16400002 */ bnez $s2,.L0f02762c
/* f027624: 00000000 */ nop
/* f027628: 0007000d */ break 0x7
.L0f02762c:
/* f02762c: 86020002 */ lh $v0,0x2($s0)
.L0f027630:
/* f027630: 1840000e */ blez $v0,.L0f02766c
/* f027634: 00000000 */ nop
/* f027638: 0fc4a46c */ jal random2
/* f02763c: 00000000 */ nop
/* f027640: 0052001b */ divu $zero,$v0,$s2
/* f027644: 860e0002 */ lh $t6,0x2($s0)
/* f027648: 00006810 */ mfhi $t5
/* f02764c: 000dcc00 */ sll $t9,$t5,0x10
/* f027650: 0019c403 */ sra $t8,$t9,0x10
/* f027654: 16400002 */ bnez $s2,.L0f027660
/* f027658: 00000000 */ nop
/* f02765c: 0007000d */ break 0x7
.L0f027660:
/* f027660: 01d84823 */ subu $t1,$t6,$t8
/* f027664: 1000000f */ b .L0f0276a4
/* f027668: a6090002 */ sh $t1,0x2($s0)
.L0f02766c:
/* f02766c: 0443000e */ bgezl $v0,.L0f0276a8
/* f027670: 86020004 */ lh $v0,0x4($s0)
/* f027674: 0fc4a46c */ jal random2
/* f027678: 00000000 */ nop
/* f02767c: 0052001b */ divu $zero,$v0,$s2
/* f027680: 860b0002 */ lh $t3,0x2($s0)
/* f027684: 00005010 */ mfhi $t2
/* f027688: 000a6400 */ sll $t4,$t2,0x10
/* f02768c: 000c7c03 */ sra $t7,$t4,0x10
/* f027690: 016f6821 */ addu $t5,$t3,$t7
/* f027694: a60d0002 */ sh $t5,0x2($s0)
/* f027698: 16400002 */ bnez $s2,.L0f0276a4
/* f02769c: 00000000 */ nop
/* f0276a0: 0007000d */ break 0x7
.L0f0276a4:
/* f0276a4: 86020004 */ lh $v0,0x4($s0)
.L0f0276a8:
/* f0276a8: 1840000e */ blez $v0,.L0f0276e4
/* f0276ac: 00000000 */ nop
/* f0276b0: 0fc4a46c */ jal random2
/* f0276b4: 00000000 */ nop
/* f0276b8: 0052001b */ divu $zero,$v0,$s2
/* f0276bc: 86190004 */ lh $t9,0x4($s0)
/* f0276c0: 00007010 */ mfhi $t6
/* f0276c4: 000ec400 */ sll $t8,$t6,0x10
/* f0276c8: 00184c03 */ sra $t1,$t8,0x10
/* f0276cc: 16400002 */ bnez $s2,.L0f0276d8
/* f0276d0: 00000000 */ nop
/* f0276d4: 0007000d */ break 0x7
.L0f0276d8:
/* f0276d8: 03295023 */ subu $t2,$t9,$t1
/* f0276dc: 1000000f */ b .L0f02771c
/* f0276e0: a60a0004 */ sh $t2,0x4($s0)
.L0f0276e4:
/* f0276e4: 0443000e */ bgezl $v0,.L0f027720
/* f0276e8: 26310001 */ addiu $s1,$s1,0x1
/* f0276ec: 0fc4a46c */ jal random2
/* f0276f0: 00000000 */ nop
/* f0276f4: 0052001b */ divu $zero,$v0,$s2
/* f0276f8: 860c0002 */ lh $t4,0x2($s0)
/* f0276fc: 00005810 */ mfhi $t3
/* f027700: 000b7c00 */ sll $t7,$t3,0x10
/* f027704: 000f6c03 */ sra $t5,$t7,0x10
/* f027708: 018d7021 */ addu $t6,$t4,$t5
/* f02770c: a60e0002 */ sh $t6,0x2($s0)
/* f027710: 16400002 */ bnez $s2,.L0f02771c
/* f027714: 00000000 */ nop
/* f027718: 0007000d */ break 0x7
.L0f02771c:
/* f02771c: 26310001 */ addiu $s1,$s1,0x1
.L0f027720:
/* f027720: 1633ff38 */ bne $s1,$s3,.L0f027404
/* f027724: 2610000c */ addiu $s0,$s0,0xc
/* f027728: 00008825 */ or $s1,$zero,$zero
/* f02772c: 1000ff1d */ b .L0f0273a4
/* f027730: 26b50008 */ addiu $s5,$s5,0x8
.L0f027734:
/* f027734: 24010001 */ addiu $at,$zero,0x1
/* f027738: 1441000c */ bne $v0,$at,.L0f02776c
/* f02773c: 8fa40094 */ lw $a0,0x94($sp)
/* f027740: 8ea20004 */ lw $v0,0x4($s5)
/* f027744: 3c0100ff */ lui $at,0xff
/* f027748: 3421ffff */ ori $at,$at,0xffff
/* f02774c: 0041c024 */ and $t8,$v0,$at
/* f027750: 0c00698d */ jal model0001a634
/* f027754: 00182982 */ srl $a1,$t8,0x6
/* f027758: afa20080 */ sw $v0,0x80($sp)
/* f02775c: 8fa40094 */ lw $a0,0x94($sp)
/* f027760: 00402825 */ or $a1,$v0,$zero
/* f027764: 0c006b57 */ jal modelNodeGetModelRelativePosition
/* f027768: 27a60074 */ addiu $a2,$sp,0x74
.L0f02776c:
/* f02776c: 1000ff0d */ b .L0f0273a4
/* f027770: 26b50008 */ addiu $s5,$s5,0x8
.L0f027774:
/* f027774: 8fb900a0 */ lw $t9,0xa0($sp)
/* f027778: 97290016 */ lhu $t1,0x16($t9)
/* f02777c: 19200018 */ blez $t1,.L0f0277e0
/* f027780: 00001825 */ or $v1,$zero,$zero
.L0f027784:
/* f027784: 8e8a0008 */ lw $t2,0x8($s4)
/* f027788: 00115880 */ sll $t3,$s1,0x2
/* f02778c: 014b7821 */ addu $t7,$t2,$t3
/* f027790: 01e32021 */ addu $a0,$t7,$v1
/* f027794: 90820000 */ lbu $v0,0x0($a0)
/* f027798: 24630001 */ addiu $v1,$v1,0x1
/* f02779c: 00560019 */ multu $v0,$s6
/* f0277a0: 00001012 */ mflo $v0
/* f0277a4: 04410003 */ bgez $v0,.L0f0277b4
/* f0277a8: 00026103 */ sra $t4,$v0,0x4
/* f0277ac: 2441000f */ addiu $at,$v0,0xf
/* f0277b0: 00016103 */ sra $t4,$at,0x4
.L0f0277b4:
/* f0277b4: 05810002 */ bgez $t4,.L0f0277c0
/* f0277b8: 01801025 */ or $v0,$t4,$zero
/* f0277bc: 00001025 */ or $v0,$zero,$zero
.L0f0277c0:
/* f0277c0: 1477fff0 */ bne $v1,$s7,.L0f027784
/* f0277c4: a0820000 */ sb $v0,0x0($a0)
/* f0277c8: 8fad00a0 */ lw $t5,0xa0($sp)
/* f0277cc: 26310001 */ addiu $s1,$s1,0x1
/* f0277d0: 95ae0016 */ lhu $t6,0x16($t5)
/* f0277d4: 022e082a */ slt $at,$s1,$t6
/* f0277d8: 5420ffea */ bnezl $at,.L0f027784
/* f0277dc: 00001825 */ or $v1,$zero,$zero
.L0f0277e0:
/* f0277e0: 8fa500a4 */ lw $a1,0xa4($sp)
.L0f0277e4:
/* f0277e4: 8fa40094 */ lw $a0,0x94($sp)
/* f0277e8: 10000012 */ b .L0f027834
/* f0277ec: 8ca20014 */ lw $v0,0x14($a1)
.L0f0277f0:
/* f0277f0: 0c0071e1 */ jal model0001c784
/* f0277f4: afa500a4 */ sw $a1,0xa4($sp)
/* f0277f8: 8fa500a4 */ lw $a1,0xa4($sp)
/* f0277fc: 8fa40094 */ lw $a0,0x94($sp)
/* f027800: 1000000c */ b .L0f027834
/* f027804: 8ca20014 */ lw $v0,0x14($a1)
.L0f027808:
/* f027808: 0c0071f4 */ jal model0001c7d0
/* f02780c: afa500a4 */ sw $a1,0xa4($sp)
/* f027810: 8fa500a4 */ lw $a1,0xa4($sp)
/* f027814: 8fa40094 */ lw $a0,0x94($sp)
/* f027818: 10000006 */ b .L0f027834
/* f02781c: 8ca20014 */ lw $v0,0x14($a1)
.L0f027820:
/* f027820: 0c007207 */ jal modelAttachHead
/* f027824: afa500a4 */ sw $a1,0xa4($sp)
/* f027828: 8fa500a4 */ lw $a1,0xa4($sp)
/* f02782c: 8fa40094 */ lw $a0,0x94($sp)
/* f027830: 8ca20014 */ lw $v0,0x14($a1)
.L0f027834:
/* f027834: 10400003 */ beqz $v0,.L0f027844
/* f027838: 00000000 */ nop
/* f02783c: 1000000b */ b .L0f02786c
/* f027840: 00402825 */ or $a1,$v0,$zero
.L0f027844:
/* f027844: 10a00009 */ beqz $a1,.L0f02786c
/* f027848: 00000000 */ nop
/* f02784c: 8ca2000c */ lw $v0,0xc($a1)
.L0f027850:
/* f027850: 50400004 */ beqzl $v0,.L0f027864
/* f027854: 8ca50008 */ lw $a1,0x8($a1)
/* f027858: 10000004 */ b .L0f02786c
/* f02785c: 00402825 */ or $a1,$v0,$zero
/* f027860: 8ca50008 */ lw $a1,0x8($a1)
.L0f027864:
/* f027864: 54a0fffa */ bnezl $a1,.L0f027850
/* f027868: 8ca2000c */ lw $v0,0xc($a1)
.L0f02786c:
/* f02786c: 54a0fe44 */ bnezl $a1,.L0f027180
/* f027870: 94a20000 */ lhu $v0,0x0($a1)
.L0f027874:
/* f027874: 8fbf003c */ lw $ra,0x3c($sp)
.L0f027878:
/* f027878: 8fb00018 */ lw $s0,0x18($sp)
/* f02787c: 8fb1001c */ lw $s1,0x1c($sp)
/* f027880: 8fb20020 */ lw $s2,0x20($sp)
/* f027884: 8fb30024 */ lw $s3,0x24($sp)
/* f027888: 8fb40028 */ lw $s4,0x28($sp)
/* f02788c: 8fb5002c */ lw $s5,0x2c($sp)
/* f027890: 8fb60030 */ lw $s6,0x30($sp)
/* f027894: 8fb70034 */ lw $s7,0x34($sp)
/* f027898: 8fbe0038 */ lw $s8,0x38($sp)
/* f02789c: 03e00008 */ jr $ra
/* f0278a0: 27bd00a8 */ addiu $sp,$sp,0xa8
);
/**
* Disfigure and darken a chr due to them dying from explosion damage.
*
* Vertices and colours are typically stored in the model definition which is
* shared between all instances of that model. To have different vertices and
* colours for a single instance requires copying that information out of the
* model definition and into a vtx store. If the vtx store is full, the chr will
* not become disfigured.
*
* The function looks for displaylist nodes in the chr's model. For each DL node
* found, its vertex and colour information is copied to the vtx store. The GBI
* commands are then iterated, looking for pointers into the vertex table. For
* each pointer found, the vertices at that offset in the table are adjusted
* randomly. Lastly, every colour in the node's colour table is darkened.
*/
void chrDisfigure(struct chrdata *chr, u32 arg1, u32 arg2)
{
struct modelnode *node;
struct modelrodata_dl *rodata;
struct modelrwdata_dl *rwdata;
struct colour *colours;
struct model *model = chr->model;
struct gfxvtx *vertices;
u32 stack;
Gfx *gdlptr;
Gfx *gdlptr2;
struct modelnode *posnode = NULL;
struct coord pos;
s32 i;
s32 j;
u32 rand = random();
if (g_Vars.mplayerisrunning || !chrIsDead(chr)) {
return;
}
// Iterate the nodes in the chr model
node = model->filedata->rootnode;
while (node) {
switch (node->type & 0xff) {
case MODELNODETYPE_DL:
rodata = &node->rodata->dl;
rwdata = modelGetNodeRwData(model, node);
if (rwdata->gdl == NULL) {
break;
}
// Check that the node is using the modeldef's vertices
// (ie. we haven't disfigured this node already)
if (rwdata->vertices == rodata->vertices) {
// Copy the vertices from the modeldef to the vtxstore
if (rwdata->vertices == rodata->vertices) {
struct gfxvtx *vertices = vtxstoreAllocate(rodata->numvertices, 0, 0, 0);
if (vertices) {
for (i = 0; i < rodata->numvertices; i++) {
vertices[i] = rwdata->vertices[i];
}
rwdata->vertices = vertices;
}
}
// Copy the colours from the modeldef to the vtxstore
if ((u32)rwdata->colours == ALIGN8((u32)&rodata->vertices[rodata->numvertices])) {
colours = vtxstoreAllocate(rodata->numcolours, 2, 0, 0);
if (colours) {
for (i = 0; i < rodata->numcolours; i++) {
colours[i] = rwdata->colours[i];
}
rwdata->colours = colours;
}
}
// Iterate the node's primary and secondary DLs, looking for
// MTX and VTX pointers
if (rwdata->vertices != rodata->vertices
&& (u32)rwdata->colours != ALIGN8((u32)&rodata->vertices[rodata->numvertices])) {
if (rwdata->gdl == rodata->primary) {
gdlptr = (Gfx *)((u32)rodata->colourtable + ((s32)rodata->primary & 0xffffff));
} else {
gdlptr = rwdata->gdl;
}
if (rodata->secondary) {
gdlptr2 = (Gfx *)((u32)rodata->colourtable + ((s32)rodata->secondary & 0xffffff));
} else {
gdlptr2 = NULL;
}
while (true) {
s32 op = *(s8 *)&gdlptr->words.w0;
if (op == G_ENDDL) {
if (gdlptr2 == NULL) {
// We're done
gdlptr = NULL;
break;
}
// Switch to second DL
gdlptr = gdlptr2;
gdlptr2 = NULL;
} else {
// Note: We should have found an MTX op before VTX.
// MTX sets posnode.
if (op == G_VTX) {
// Iterate the vertex table and fudge them
u8 *ptr = (u8 *)&gdlptr->words.w0;
s32 word = gdlptr->words.w1 & 0xffffff;
s32 numverts;
vertices = (struct gfxvtx *)((u32)rwdata->vertices + word);
numverts = (u32)ptr[1] / 16 + 1;
if (posnode) {
for (i = 0; i < numverts; i++) {
rng2SetSeed(rand + vertices[i].x + vertices[i].y + vertices[i].z + (u32)pos.f[0] + (u32)pos.f[1] + (u32)pos.f[2]);
if (vertices[i].x > 0) {
vertices[i].x -= (s16)(random2() % 20);
} else if (vertices[i].x < 0) {
vertices[i].x += (s16)(random2() % 20);
}
if (vertices[i].y > 0) {
vertices[i].y -= (s16)(random2() % 20);
} else if (vertices[i].y < 0) {
vertices[i].y += (s16)(random2() % 20);
}
if (vertices[i].z > 0) {
vertices[i].z -= (s16)(random2() % 20);
} else if (vertices[i].z < 0) {
// @bug: should be z instead of y
vertices[i].y += (s16)(random2() % 20);
}
}
}
} else if (op == G_MTX) {
// Get the position of the node relative to the model
u32 addr = gdlptr->words.w1 & 0xffffff;
posnode = model0001a634(model, addr / sizeof(Mtxf));
modelNodeGetModelRelativePosition(model, posnode, &pos);
}
gdlptr++;
}
}
// Darken colours
for (i = 0; i < rodata->numcolours; i++) {
for (j = 0; j < 3; j++) {
s32 tmp = rwdata->colours[i].bytes[j];
tmp = tmp * 5 / 16;
if (tmp < 0) {
tmp = 0;
}
rwdata->colours[i].bytes[j] = tmp;
}
}
}
}
break;
case MODELNODETYPE_DISTANCE:
model0001c784(model, node);
break;
case MODELNODETYPE_TOGGLE:
model0001c7d0(model, node);
break;
case MODELNODETYPE_HEADSPOT:
modelAttachHead(model, node);
break;
}
// Find the next node to iterate
if (node->child) {
node = node->child;
} else {
while (node) {
if (node->next) {
node = node->next;
break;
}
node = node->parent;
}
}
}
}
f32 chr0f0278a4(struct chrdata *chr)
{
+3 -3
View File
@@ -2130,7 +2130,7 @@ glabel var7f1b68a0pf
/* f12c674: 17000004 */ bnez $t8,.PF0f12c688
/* f12c678: 02402025 */ move $a0,$s2
/* f12c67c: 4406d000 */ mfc1 $a2,$f26
/* f12c680: 0fc09c86 */ jal chr0f0270f4
/* f12c680: 0fc09c86 */ jal chrDisfigure
/* f12c684: 02602825 */ move $a1,$s3
.PF0f12c688:
/* f12c688: 86820002 */ lh $v0,0x2($s4)
@@ -2898,7 +2898,7 @@ glabel var7f1b559c
/* f12bb70: 17000004 */ bnez $t8,.L0f12bb84
/* f12bb74: 02402025 */ or $a0,$s2,$zero
/* f12bb78: 4406d000 */ mfc1 $a2,$f26
/* f12bb7c: 0fc09c3d */ jal chr0f0270f4
/* f12bb7c: 0fc09c3d */ jal chrDisfigure
/* f12bb80: 02602825 */ or $a1,$s3,$zero
.L0f12bb84:
/* f12bb84: 86820002 */ lh $v0,0x2($s4)
@@ -3663,7 +3663,7 @@ glabel var7f1b559c
/* f126700: 17000004 */ bnez $t8,.NB0f126714
/* f126704: 02402025 */ or $a0,$s2,$zero
/* f126708: 4406d000 */ mfc1 $a2,$f26
/* f12670c: 0fc09ac4 */ jal chr0f0270f4
/* f12670c: 0fc09ac4 */ jal chrDisfigure
/* f126710: 02602825 */ or $a1,$s3,$zero
.NB0f126714:
/* f126714: 86820002 */ lh $v0,0x2($s4)
+6 -6
View File
@@ -44,7 +44,7 @@ struct var8007e3d0 var8007e3d0[] = {
* Search all props and their model data for something, and replace it with
* something else.
*/
void func0f129210(union modelrwdata *find, union modelrwdata *replacement)
void vtxstoreFixRefs(union modelrwdata *find, union modelrwdata *replacement)
{
u32 stack;
struct prop *prop = g_Vars.activeprops;
@@ -96,7 +96,7 @@ void func0f129210(union modelrwdata *find, union modelrwdata *replacement)
}
}
void func0f12939c(void)
void vtxstoreTick(void)
{
s32 i;
s32 j;
@@ -109,7 +109,7 @@ void func0f12939c(void)
&& var8007e3d0[1].unk24[i].unk04 == var8007e3d0[1].unk24[j].unk04
&& var8007e3d0[1].unk24[i].unk08 == var8007e3d0[1].unk24[j].unk08) {
s32 size = ALIGN16(var8007e3d0[1].unk24[j].unk0c * 0x0c);
func0f129210(var8007e3d0[1].unk24[j].unk00, var8007e3d0[1].unk24[i].unk00);
vtxstoreFixRefs(var8007e3d0[1].unk24[j].unk00, var8007e3d0[1].unk24[i].unk00);
var8007e3d0[1].unk24[i].unk0e += var8007e3d0[1].unk24[j].unk0e;
memaFree(var8007e3d0[1].unk24[j].unk00, size);
var8007e3d0[1].unk24[j].unk0e = 0;
@@ -126,7 +126,7 @@ void func0f12939c(void)
}
#if VERSION >= VERSION_NTSC_1_0
void *func0f12955c(s32 count, s32 index, s32 arg2, s32 arg3)
void *vtxstoreAllocate(s32 count, s32 index, s32 arg2, s32 arg3)
{
s32 i;
s32 numchrs;
@@ -204,7 +204,7 @@ void *func0f12955c(s32 count, s32 index, s32 arg2, s32 arg3)
}
#else
GLOBAL_ASM(
glabel func0f12955c
glabel vtxstoreAllocate
/* f12419c: 00057080 */ sll $t6,$a1,0x2
/* f1241a0: 27bdff78 */ addiu $sp,$sp,-136
/* f1241a4: 01c57023 */ subu $t6,$t6,$a1
@@ -407,7 +407,7 @@ glabel func0f12955c
);
#endif
void func0f129818(s32 arg0, void *arg1)
void vtxstoreFree(s32 arg0, void *arg1)
{
s32 i;
+3 -3
View File
@@ -7872,7 +7872,7 @@ glabel var7f1b8ed0pf
.PF0f16d7ac:
/* f16d7ac: 0fc5b16f */ jal lvUpdateCutsceneTime
/* f16d7b0: 00000000 */ nop
/* f16d7b4: 0fc4a79b */ jal func0f12939c
/* f16d7b4: 0fc4a79b */ jal vtxstoreTick
/* f16d7b8: 00000000 */ nop
/* f16d7bc: 0fc5af9f */ jal lvUpdateSoloHandicaps
/* f16d7c0: 00000000 */ nop
@@ -8275,7 +8275,7 @@ void lvTick(void)
func0f01d860();
} else {
lvUpdateCutsceneTime();
func0f12939c();
vtxstoreTick();
lvUpdateSoloHandicaps();
func0f01d8c0();
func0f01d990();
@@ -9474,7 +9474,7 @@ glabel lvTick
.NB0f167718:
/* f167718: 0fc5998f */ jal lvUpdateCutsceneTime
/* f16771c: 00000000 */ sll $zero,$zero,0x0
/* f167720: 0fc48ff7 */ jal func0f12939c
/* f167720: 0fc48ff7 */ jal vtxstoreTick
/* f167724: 00000000 */ sll $zero,$zero,0x0
/* f167728: 0fc597c1 */ jal lvUpdateSoloHandicaps
/* f16772c: 00000000 */ sll $zero,$zero,0x0
+8 -8
View File
@@ -54145,7 +54145,7 @@ glabel var7f1aa838
/* f0820c4: 86840010 */ lh $a0,0x10($s4)
/* f0820c8: 24050001 */ addiu $a1,$zero,0x1
/* f0820cc: 03c03025 */ or $a2,$s8,$zero
/* f0820d0: 0fc4a557 */ jal func0f12955c
/* f0820d0: 0fc4a557 */ jal vtxstoreAllocate
/* f0820d4: 00403825 */ or $a3,$v0,$zero
/* f0820d8: 10400041 */ beqz $v0,.L0f0821e0
/* f0820dc: 00408025 */ or $s0,$v0,$zero
@@ -54183,7 +54183,7 @@ glabel var7f1aa838
/* f082158: 8e680000 */ lw $t0,0x0($s3)
/* f08215c: 8e650000 */ lw $a1,0x0($s3)
.L0f082160:
/* f082160: 0fc4a606 */ jal func0f129818
/* f082160: 0fc4a606 */ jal vtxstoreFree
/* f082164: 24040001 */ addiu $a0,$zero,0x1
/* f082168: 1000001b */ b .L0f0821d8
/* f08216c: 00000000 */ nop
@@ -54235,7 +54235,7 @@ glabel var7f1aa838
/* f082210: 24050003 */ addiu $a1,$zero,0x3
/* f082214: 96840016 */ lhu $a0,0x16($s4)
/* f082218: 00003025 */ or $a2,$zero,$zero
/* f08221c: 0fc4a557 */ jal func0f12955c
/* f08221c: 0fc4a557 */ jal vtxstoreAllocate
/* f082220: 00003825 */ or $a3,$zero,$zero
/* f082224: 50400014 */ beqzl $v0,.L0f082278
/* f082228: afa0008c */ sw $zero,0x8c($sp)
@@ -54849,7 +54849,7 @@ glabel var7f1aa838
/* f080b1c: 86840010 */ lh $a0,0x10($s4)
/* f080b20: 24050001 */ addiu $a1,$zero,0x1
/* f080b24: 02c03025 */ or $a2,$s6,$zero
/* f080b28: 0fc49067 */ jal func0f12955c
/* f080b28: 0fc49067 */ jal vtxstoreAllocate
/* f080b2c: 00403825 */ or $a3,$v0,$zero
/* f080b30: 10400041 */ beqz $v0,.NB0f080c38
/* f080b34: 00408025 */ or $s0,$v0,$zero
@@ -54887,7 +54887,7 @@ glabel var7f1aa838
/* f080bb0: 8e680000 */ lw $t0,0x0($s3)
/* f080bb4: 8e650000 */ lw $a1,0x0($s3)
.NB0f080bb8:
/* f080bb8: 0fc4911e */ jal func0f129818
/* f080bb8: 0fc4911e */ jal vtxstoreFree
/* f080bbc: 24040001 */ addiu $a0,$zero,0x1
/* f080bc0: 1000001b */ beqz $zero,.NB0f080c30
/* f080bc4: 00000000 */ sll $zero,$zero,0x0
@@ -54939,7 +54939,7 @@ glabel var7f1aa838
/* f080c68: 24050003 */ addiu $a1,$zero,0x3
/* f080c6c: 96840016 */ lhu $a0,0x16($s4)
/* f080c70: 00003025 */ or $a2,$zero,$zero
/* f080c74: 0fc49067 */ jal func0f12955c
/* f080c74: 0fc49067 */ jal vtxstoreAllocate
/* f080c78: 00003825 */ or $a3,$zero,$zero
/* f080c7c: 50400014 */ beqzl $v0,.NB0f080cd0
/* f080c80: afa00094 */ sw $zero,0x94($sp)
@@ -65038,7 +65038,7 @@ glabel func0f089a94
/* f089b44: 8e450000 */ lw $a1,0x0($s2)
/* f089b48: 50450007 */ beql $v0,$a1,.L0f089b68
/* f089b4c: 86380010 */ lh $t8,0x10($s1)
/* f089b50: 0fc4a606 */ jal func0f129818
/* f089b50: 0fc4a606 */ jal vtxstoreFree
/* f089b54: 02a02025 */ or $a0,$s5,$zero
/* f089b58: 8e2f000c */ lw $t7,0xc($s1)
/* f089b5c: ae4f0000 */ sw $t7,0x0($s2)
@@ -65060,7 +65060,7 @@ glabel func0f089a94
/* f089b98: 10000001 */ b .L0f089ba0
/* f089b9c: 24040003 */ addiu $a0,$zero,0x3
.L0f089ba0:
/* f089ba0: 0fc4a606 */ jal func0f129818
/* f089ba0: 0fc4a606 */ jal vtxstoreFree
/* f089ba4: 00000000 */ nop
/* f089ba8: 862d0010 */ lh $t5,0x10($s1)
/* f089bac: 8e2c000c */ lw $t4,0xc($s1)
+1 -1
View File
@@ -39,7 +39,7 @@ Gfx *chrRender(struct prop *prop, Gfx *gdl, bool withalpha);
void chrEmitSparks(struct chrdata *chr, struct prop *prop, s32 hitpart, struct coord *coord, struct coord *coord2, struct chrdata *chr2);
u32 chr0f0260c4(void);
void chrBruise(struct model *model, s32 hitpart, struct modelnode *node, struct coord *arg3);
u32 chr0f0270f4(void);
void chrDisfigure(struct chrdata *chr, u32 arg1, u32 arg2);
f32 chr0f0278a4(struct chrdata *chr);
void chr0f027994(struct prop *prop, struct shotdata *shotdata, bool arg2, bool arg3);
void chrHit(struct shotdata *shotdata, struct hit *hit);
+1 -1
View File
@@ -5,6 +5,6 @@
#include "types.h"
u32 random2(void);
u32 rng2SetSeed(void);
void rng2SetSeed(u32 seed);
#endif
+4 -4
View File
@@ -4,9 +4,9 @@
#include "data.h"
#include "types.h"
void func0f129210(union modelrwdata *find, union modelrwdata *replacement);
void func0f12939c(void);
void *func0f12955c(s32 count, s32 index, s32 arg2, s32 arg3);
void func0f129818(s32 arg0, void *arg1);
void vtxstoreFixRefs(union modelrwdata *find, union modelrwdata *replacement);
void vtxstoreTick(void);
void *vtxstoreAllocate(s32 count, s32 index, s32 arg2, s32 arg3);
void vtxstoreFree(s32 arg0, void *arg1);
#endif
+15 -14
View File
@@ -668,7 +668,7 @@ struct modelrodata_dl { // type 0x18
/*0x00*/ Gfx *primary;
/*0x04*/ Gfx *secondary;
/*0x08*/ u32 *colourtable;
/*0x0c*/ struct gfxvtx *vertices;
/*0x0c*/ struct gfxvtx *vertices; // colours follow this array
/*0x10*/ s16 numvertices;
/*0x12*/ s16 mcount;
/*0x14*/ u16 rwdataindex;
@@ -785,10 +785,23 @@ struct modelrwdata_headspot { // type 0x17
void *rwdatas;
};
struct colour {
union {
u32 word;
u8 bytes[4];
struct {
u8 r;
u8 g;
u8 b;
u8 a;
};
};
};
struct modelrwdata_dl { // type 0x18
struct gfxvtx *vertices;
Gfx *gdl;
u32 *unk08;
struct colour *colours;
};
union modelrwdata {
@@ -6836,18 +6849,6 @@ struct var8009dd78 {
f32 unk04;
};
struct colour {
union {
struct {
u8 r;
u8 g;
u8 b;
u8 a;
} u8;
u32 u32;
};
};
struct var800ab570 {
u32 unk00;
u32 unk04;
+3 -3
View File
@@ -4648,7 +4648,7 @@ void modelRenderNodeDl(struct modelrenderdata *renderdata, struct model *model,
}
gSPSegment(renderdata->gdl++, 0x04, osVirtualToPhysical(rwdata->dl.vertices));
gSPSegment(renderdata->gdl++, 0x06, osVirtualToPhysical(rwdata->dl.unk08));
gSPSegment(renderdata->gdl++, 0x06, osVirtualToPhysical(rwdata->dl.colours));
gSPDisplayList(renderdata->gdl++, rwdata->dl.gdl);
@@ -4671,7 +4671,7 @@ void modelRenderNodeDl(struct modelrenderdata *renderdata, struct model *model,
}
gSPSegment(renderdata->gdl++, 0x04, osVirtualToPhysical(rwdata->dl.vertices));
gSPSegment(renderdata->gdl++, 0x06, osVirtualToPhysical(rwdata->dl.unk08));
gSPSegment(renderdata->gdl++, 0x06, osVirtualToPhysical(rwdata->dl.colours));
model00020248(renderdata, false);
@@ -6453,7 +6453,7 @@ void modelInitRwData(struct model *model, struct modelnode *startnode)
rwdata = modelGetNodeRwData(model, node);
rwdata->dl.vertices = rodata->dl.vertices;
rwdata->dl.gdl = rodata->dl.primary;
rwdata->dl.unk08 = (void *) ALIGN8((u32)(rodata->dl.vertices + rodata->dl.numvertices));
rwdata->dl.colours = (void *) ALIGN8((u32)(rodata->dl.vertices + rodata->dl.numvertices));
if (rodata->dl.numvertices);
if (rodata->dl.numvertices);
if (rodata->dl.numvertices);