From 47add757e07a0582fa659c052e230436c5df544f Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Mon, 27 Mar 2023 22:15:42 +1000 Subject: [PATCH] Decompile chr0f0260c4 --- src/game/chr.c | 581 +------------------------------------------------ 1 file changed, 4 insertions(+), 577 deletions(-) diff --git a/src/game/chr.c b/src/game/chr.c index ff57d9e8d..3689ed894 100644 --- a/src/game/chr.c +++ b/src/game/chr.c @@ -3675,574 +3675,6 @@ void chrEmitSparks(struct chrdata *chr, struct prop *prop, s32 hitpart, struct c #endif } -#if MATCHING -GLOBAL_ASM( -glabel chr0f0260c4 -/* f0260c4: 27bdfed8 */ addiu $sp,$sp,-296 -/* f0260c8: afb00018 */ sw $s0,0x18($sp) -/* f0260cc: afbf003c */ sw $ra,0x3c($sp) -/* f0260d0: afb30024 */ sw $s3,0x24($sp) -/* f0260d4: afb20020 */ sw $s2,0x20($sp) -/* f0260d8: afb1001c */ sw $s1,0x1c($sp) -/* f0260dc: 3c107fff */ lui $s0,0x7fff -/* f0260e0: 00e09025 */ or $s2,$a3,$zero -/* f0260e4: 00c09825 */ or $s3,$a2,$zero -/* f0260e8: afbe0038 */ sw $s8,0x38($sp) -/* f0260ec: afb70034 */ sw $s7,0x34($sp) -/* f0260f0: afb60030 */ sw $s6,0x30($sp) -/* f0260f4: afb5002c */ sw $s5,0x2c($sp) -/* f0260f8: afb40028 */ sw $s4,0x28($sp) -/* f0260fc: afa40128 */ sw $a0,0x128($sp) -/* f026100: afa5012c */ sw $a1,0x12c($sp) -/* f026104: 00008825 */ or $s1,$zero,$zero -/* f026108: 3610ffff */ ori $s0,$s0,0xffff -/* f02610c: 0c004b70 */ jal random -/* f026110: afa00100 */ sw $zero,0x100($sp) -/* f026114: 24010032 */ addiu $at,$zero,0x32 -/* f026118: 0041001b */ divu $zero,$v0,$at -/* f02611c: 00007010 */ mfhi $t6 -/* f026120: 25cf0014 */ addiu $t7,$t6,0x14 -/* f026124: afaf00cc */ sw $t7,0xcc($sp) -/* f026128: afa000c0 */ sw $zero,0xc0($sp) -/* f02612c: 0c0069d0 */ jal modelNodeFindMtxNode -/* f026130: 02602025 */ or $a0,$s3,$zero -/* f026134: 8fa40128 */ lw $a0,0x128($sp) -/* f026138: 00402825 */ or $a1,$v0,$zero -/* f02613c: 0c006b57 */ jal modelNodeGetModelRelativePosition -/* f026140: 27a600f4 */ addiu $a2,$sp,0xf4 -/* f026144: c6440000 */ lwc1 $f4,0x0($s2) -/* f026148: c7a600f4 */ lwc1 $f6,0xf4($sp) -/* f02614c: c7b000f8 */ lwc1 $f16,0xf8($sp) -/* f026150: 02602825 */ or $a1,$s3,$zero -/* f026154: 46062201 */ sub.s $f8,$f4,$f6 -/* f026158: c7a600fc */ lwc1 $f6,0xfc($sp) -/* f02615c: 24160011 */ addiu $s6,$zero,0x11 -/* f026160: 2415000a */ addiu $s5,$zero,0xa -/* f026164: e7a800dc */ swc1 $f8,0xdc($sp) -/* f026168: c64a0004 */ lwc1 $f10,0x4($s2) -/* f02616c: 46105481 */ sub.s $f18,$f10,$f16 -/* f026170: e7b200e0 */ swc1 $f18,0xe0($sp) -/* f026174: c6440008 */ lwc1 $f4,0x8($s2) -/* f026178: 46062201 */ sub.s $f8,$f4,$f6 -/* f02617c: 126000c7 */ beqz $s3,.L0f02649c -/* f026180: e7a800e4 */ swc1 $f8,0xe4($sp) -/* f026184: 94b40000 */ lhu $s4,0x0($a1) -.L0f026188: -/* f026188: 24010008 */ addiu $at,$zero,0x8 -/* f02618c: 8fa40128 */ lw $a0,0x128($sp) -/* f026190: 329800ff */ andi $t8,$s4,0xff -/* f026194: 13010099 */ beq $t8,$at,.L0f0263fc -/* f026198: 0300a025 */ or $s4,$t8,$zero -/* f02619c: 24010012 */ addiu $at,$zero,0x12 -/* f0261a0: 1301009b */ beq $t8,$at,.L0f026410 -/* f0261a4: 8fa40128 */ lw $a0,0x128($sp) -/* f0261a8: 24010017 */ addiu $at,$zero,0x17 -/* f0261ac: 1301009d */ beq $t8,$at,.L0f026424 -/* f0261b0: 8fa40128 */ lw $a0,0x128($sp) -/* f0261b4: 24010018 */ addiu $at,$zero,0x18 -/* f0261b8: 13010003 */ beq $t8,$at,.L0f0261c8 -/* f0261bc: 8fa40128 */ lw $a0,0x128($sp) -/* f0261c0: 1000009c */ b .L0f026434 -/* f0261c4: 8ca20014 */ lw $v0,0x14($a1) -.L0f0261c8: -/* f0261c8: 8cb20004 */ lw $s2,0x4($a1) -/* f0261cc: 0c006a87 */ jal modelGetNodeRwData -/* f0261d0: afa50110 */ sw $a1,0x110($sp) -/* f0261d4: 8c440004 */ lw $a0,0x4($v0) -/* f0261d8: 8fa50110 */ lw $a1,0x110($sp) -/* f0261dc: 54800004 */ bnezl $a0,.L0f0261f0 -/* f0261e0: 8e430000 */ lw $v1,0x0($s2) -/* f0261e4: 10000093 */ b .L0f026434 -/* f0261e8: 8ca20014 */ lw $v0,0x14($a1) -/* f0261ec: 8e430000 */ lw $v1,0x0($s2) -.L0f0261f0: -/* f0261f0: 3c0100ff */ lui $at,0xff -/* f0261f4: 3421ffff */ ori $at,$at,0xffff -/* f0261f8: 14640005 */ bne $v1,$a0,.L0f026210 -/* f0261fc: 0080f025 */ or $s8,$a0,$zero -/* f026200: 8e4a0008 */ lw $t2,0x8($s2) -/* f026204: 00615824 */ and $t3,$v1,$at -/* f026208: 10000001 */ b .L0f026210 -/* f02620c: 014bf021 */ addu $s8,$t2,$t3 -.L0f026210: -/* f026210: 8e420004 */ lw $v0,0x4($s2) -/* f026214: 3c0100ff */ lui $at,0xff -/* f026218: 50400008 */ beqzl $v0,.L0f02623c -/* f02621c: afa00108 */ sw $zero,0x108($sp) -/* f026220: 8e4c0008 */ lw $t4,0x8($s2) -/* f026224: 3421ffff */ ori $at,$at,0xffff -/* f026228: 00416824 */ and $t5,$v0,$at -/* f02622c: 018d7021 */ addu $t6,$t4,$t5 -/* f026230: 10000002 */ b .L0f02623c -/* f026234: afae0108 */ sw $t6,0x108($sp) -/* f026238: afa00108 */ sw $zero,0x108($sp) -.L0f02623c: -/* f02623c: 83c20000 */ lb $v0,0x0($s8) -/* f026240: 2401ffb8 */ addiu $at,$zero,-72 -/* f026244: 8faf0108 */ lw $t7,0x108($sp) -/* f026248: 5441000a */ bnel $v0,$at,.L0f026274 -/* f02624c: 24010004 */ addiu $at,$zero,0x4 -/* f026250: 51e00005 */ beqzl $t7,.L0f026268 -/* f026254: 8fa50110 */ lw $a1,0x110($sp) -/* f026258: 01e0f025 */ or $s8,$t7,$zero -/* f02625c: 1000fff7 */ b .L0f02623c -/* f026260: afa00108 */ sw $zero,0x108($sp) -/* f026264: 8fa50110 */ lw $a1,0x110($sp) -.L0f026268: -/* f026268: 10000072 */ b .L0f026434 -/* f02626c: 8ca20014 */ lw $v0,0x14($a1) -/* f026270: 24010004 */ addiu $at,$zero,0x4 -.L0f026274: -/* f026274: 1441003e */ bne $v0,$at,.L0f026370 -/* f026278: 8fac0100 */ lw $t4,0x100($sp) -/* f02627c: 8fc20004 */ lw $v0,0x4($s8) -/* f026280: 93c90001 */ lbu $t1,0x1($s8) -/* f026284: 3c0100ff */ lui $at,0xff -/* f026288: 8e4a000c */ lw $t2,0xc($s2) -/* f02628c: 3421ffff */ ori $at,$at,0xffff -/* f026290: 0041c824 */ and $t9,$v0,$at -/* f026294: 00095902 */ srl $t3,$t1,0x4 -/* f026298: 25690001 */ addiu $t1,$t3,0x1 -/* f02629c: 11800055 */ beqz $t4,.L0f0263f4 -/* f0262a0: 01591821 */ addu $v1,$t2,$t9 -/* f0262a4: 19200053 */ blez $t1,.L0f0263f4 -/* f0262a8: 00003025 */ or $a2,$zero,$zero -/* f0262ac: 00601025 */ or $v0,$v1,$zero -.L0f0262b0: -/* f0262b0: 84470000 */ lh $a3,0x0($v0) -/* f0262b4: 8fad00d0 */ lw $t5,0xd0($sp) -/* f0262b8: 8fae00d4 */ lw $t6,0xd4($sp) -/* f0262bc: 844f0002 */ lh $t7,0x2($v0) -/* f0262c0: 01a71823 */ subu $v1,$t5,$a3 -/* f0262c4: 00630019 */ multu $v1,$v1 -/* f0262c8: 01cf2023 */ subu $a0,$t6,$t7 -/* f0262cc: 8fb800d8 */ lw $t8,0xd8($sp) -/* f0262d0: 84590004 */ lh $t9,0x4($v0) -/* f0262d4: 24c60001 */ addiu $a2,$a2,0x1 -/* f0262d8: c7aa00e8 */ lwc1 $f10,0xe8($sp) -/* f0262dc: 03192823 */ subu $a1,$t8,$t9 -/* f0262e0: 00005012 */ mflo $t2 -/* f0262e4: 00000000 */ nop -/* f0262e8: 00000000 */ nop -/* f0262ec: 00840019 */ multu $a0,$a0 -/* f0262f0: 00005812 */ mflo $t3 -/* f0262f4: 014b6021 */ addu $t4,$t2,$t3 -/* f0262f8: 00000000 */ nop -/* f0262fc: 00a50019 */ multu $a1,$a1 -/* f026300: 00006812 */ mflo $t5 -/* f026304: 018d4021 */ addu $t0,$t4,$t5 -/* f026308: 0110082a */ slt $at,$t0,$s0 -/* f02630c: 10200014 */ beqz $at,.L0f026360 -/* f026310: 00000000 */ nop -/* f026314: 4600540d */ trunc.w.s $f16,$f10 -/* f026318: c7b200ec */ lwc1 $f18,0xec($sp) -/* f02631c: c7a600f0 */ lwc1 $f6,0xf0($sp) -/* f026320: 01008025 */ or $s0,$t0,$zero -/* f026324: 440f8000 */ mfc1 $t7,$f16 -/* f026328: 4600910d */ trunc.w.s $f4,$f18 -/* f02632c: 8fb10110 */ lw $s1,0x110($sp) -/* f026330: 01e7c021 */ addu $t8,$t7,$a3 -/* f026334: afb80114 */ sw $t8,0x114($sp) -/* f026338: 844b0002 */ lh $t3,0x2($v0) -/* f02633c: 440a2000 */ mfc1 $t2,$f4 -/* f026340: 4600320d */ trunc.w.s $f8,$f6 -/* f026344: 014b6021 */ addu $t4,$t2,$t3 -/* f026348: afac0118 */ sw $t4,0x118($sp) -/* f02634c: 844f0004 */ lh $t7,0x4($v0) -/* f026350: 440e4000 */ mfc1 $t6,$f8 -/* f026354: 00000000 */ nop -/* f026358: 01cfc021 */ addu $t8,$t6,$t7 -/* f02635c: afb8011c */ sw $t8,0x11c($sp) -.L0f026360: -/* f026360: 14c9ffd3 */ bne $a2,$t1,.L0f0262b0 -/* f026364: 2442000c */ addiu $v0,$v0,0xc -/* f026368: 1000ffb4 */ b .L0f02623c -/* f02636c: 27de0008 */ addiu $s8,$s8,0x8 -.L0f026370: -/* f026370: 24010001 */ addiu $at,$zero,0x1 -/* f026374: 1441001f */ bne $v0,$at,.L0f0263f4 -/* f026378: 8fa40128 */ lw $a0,0x128($sp) -/* f02637c: 8fc20004 */ lw $v0,0x4($s8) -/* f026380: 3c0100ff */ lui $at,0xff -/* f026384: 3421ffff */ ori $at,$at,0xffff -/* f026388: 0041c824 */ and $t9,$v0,$at -/* f02638c: 0c00698d */ jal modelFindNodeByMtxIndex -/* f026390: 00192982 */ srl $a1,$t9,0x6 -/* f026394: afa20100 */ sw $v0,0x100($sp) -/* f026398: 8fa40128 */ lw $a0,0x128($sp) -/* f02639c: 00402825 */ or $a1,$v0,$zero -/* f0263a0: 0c006b57 */ jal modelNodeGetModelRelativePosition -/* f0263a4: 27a600e8 */ addiu $a2,$sp,0xe8 -/* f0263a8: c7aa00e8 */ lwc1 $f10,0xe8($sp) -/* f0263ac: c7b000dc */ lwc1 $f16,0xdc($sp) -/* f0263b0: c7a600ec */ lwc1 $f6,0xec($sp) -/* f0263b4: c7a800e0 */ lwc1 $f8,0xe0($sp) -/* f0263b8: 46105480 */ add.s $f18,$f10,$f16 -/* f0263bc: 46083280 */ add.s $f10,$f6,$f8 -/* f0263c0: 4600910d */ trunc.w.s $f4,$f18 -/* f0263c4: c7b200f0 */ lwc1 $f18,0xf0($sp) -/* f0263c8: 4600540d */ trunc.w.s $f16,$f10 -/* f0263cc: 440b2000 */ mfc1 $t3,$f4 -/* f0263d0: c7a400e4 */ lwc1 $f4,0xe4($sp) -/* f0263d4: 440d8000 */ mfc1 $t5,$f16 -/* f0263d8: 46049180 */ add.s $f6,$f18,$f4 -/* f0263dc: afab00d0 */ sw $t3,0xd0($sp) -/* f0263e0: afad00d4 */ sw $t5,0xd4($sp) -/* f0263e4: 4600320d */ trunc.w.s $f8,$f6 -/* f0263e8: 440f4000 */ mfc1 $t7,$f8 -/* f0263ec: 00000000 */ nop -/* f0263f0: afaf00d8 */ sw $t7,0xd8($sp) -.L0f0263f4: -/* f0263f4: 1000ff91 */ b .L0f02623c -/* f0263f8: 27de0008 */ addiu $s8,$s8,0x8 -.L0f0263fc: -/* f0263fc: 0c0071e1 */ jal modelApplyDistanceRelations -/* f026400: afa50110 */ sw $a1,0x110($sp) -/* f026404: 8fa50110 */ lw $a1,0x110($sp) -/* f026408: 1000000a */ b .L0f026434 -/* f02640c: 8ca20014 */ lw $v0,0x14($a1) -.L0f026410: -/* f026410: 0c0071f4 */ jal modelApplyToggleRelations -/* f026414: afa50110 */ sw $a1,0x110($sp) -/* f026418: 8fa50110 */ lw $a1,0x110($sp) -/* f02641c: 10000005 */ b .L0f026434 -/* f026420: 8ca20014 */ lw $v0,0x14($a1) -.L0f026424: -/* f026424: 0c007207 */ jal modelApplyHeadRelations -/* f026428: afa50110 */ sw $a1,0x110($sp) -/* f02642c: 8fa50110 */ lw $a1,0x110($sp) -/* f026430: 8ca20014 */ lw $v0,0x14($a1) -.L0f026434: -/* f026434: 10400009 */ beqz $v0,.L0f02645c -/* f026438: 00000000 */ nop -/* f02643c: 10b30005 */ beq $a1,$s3,.L0f026454 -/* f026440: 00000000 */ nop -/* f026444: 12950005 */ beq $s4,$s5,.L0f02645c -/* f026448: 00000000 */ nop -/* f02644c: 12960003 */ beq $s4,$s6,.L0f02645c -/* f026450: 00000000 */ nop -.L0f026454: -/* f026454: 1000000f */ b .L0f026494 -/* f026458: 00402825 */ or $a1,$v0,$zero -.L0f02645c: -/* f02645c: 10a0000d */ beqz $a1,.L0f026494 -/* f026460: 00000000 */ nop -.L0f026464: -/* f026464: 54b30004 */ bnel $a1,$s3,.L0f026478 -/* f026468: 8ca2000c */ lw $v0,0xc($a1) -/* f02646c: 10000009 */ b .L0f026494 -/* f026470: 00002825 */ or $a1,$zero,$zero -/* f026474: 8ca2000c */ lw $v0,0xc($a1) -.L0f026478: -/* f026478: 50400004 */ beqzl $v0,.L0f02648c -/* f02647c: 8ca50008 */ lw $a1,0x8($a1) -/* f026480: 10000004 */ b .L0f026494 -/* f026484: 00402825 */ or $a1,$v0,$zero -/* f026488: 8ca50008 */ lw $a1,0x8($a1) -.L0f02648c: -/* f02648c: 14a0fff5 */ bnez $a1,.L0f026464 -/* f026490: 00000000 */ nop -.L0f026494: -/* f026494: 54a0ff3c */ bnezl $a1,.L0f026188 -/* f026498: 94b40000 */ lhu $s4,0x0($a1) -.L0f02649c: -/* f02649c: 122000fb */ beqz $s1,.L0f02688c -/* f0264a0: 8fa40128 */ lw $a0,0x128($sp) -/* f0264a4: 8c8b0008 */ lw $t3,0x8($a0) -/* f0264a8: 2417000c */ addiu $s7,$zero,0xc -/* f0264ac: 8d650000 */ lw $a1,0x0($t3) -/* f0264b0: 50a000f7 */ beqzl $a1,.L0f026890 -/* f0264b4: 8fbf003c */ lw $ra,0x3c($sp) -/* f0264b8: 94a20000 */ lhu $v0,0x0($a1) -.L0f0264bc: -/* f0264bc: 24010008 */ addiu $at,$zero,0x8 -/* f0264c0: 304c00ff */ andi $t4,$v0,0xff -/* f0264c4: 118100ce */ beq $t4,$at,.L0f026800 -/* f0264c8: 24010012 */ addiu $at,$zero,0x12 -/* f0264cc: 118100d2 */ beq $t4,$at,.L0f026818 -/* f0264d0: 24010017 */ addiu $at,$zero,0x17 -/* f0264d4: 118100d6 */ beq $t4,$at,.L0f026830 -/* f0264d8: 24010018 */ addiu $at,$zero,0x18 -/* f0264dc: 51810004 */ beql $t4,$at,.L0f0264f0 -/* f0264e0: 8cb20004 */ lw $s2,0x4($a1) -/* f0264e4: 100000d7 */ b .L0f026844 -/* f0264e8: 8ca20014 */ lw $v0,0x14($a1) -/* f0264ec: 8cb20004 */ lw $s2,0x4($a1) -.L0f0264f0: -/* f0264f0: 0c006a87 */ jal modelGetNodeRwData -/* f0264f4: afa50110 */ sw $a1,0x110($sp) -/* f0264f8: 8c440004 */ lw $a0,0x4($v0) -/* f0264fc: 00408025 */ or $s0,$v0,$zero -/* f026500: 54800006 */ bnezl $a0,.L0f02651c -/* f026504: 8e430000 */ lw $v1,0x0($s2) -/* f026508: 8fa50110 */ lw $a1,0x110($sp) -/* f02650c: 8fa40128 */ lw $a0,0x128($sp) -/* f026510: 100000cc */ b .L0f026844 -/* f026514: 8ca20014 */ lw $v0,0x14($a1) -/* f026518: 8e430000 */ lw $v1,0x0($s2) -.L0f02651c: -/* f02651c: 3c0100ff */ lui $at,0xff -/* f026520: 3421ffff */ ori $at,$at,0xffff -/* f026524: 14640005 */ bne $v1,$a0,.L0f02653c -/* f026528: 0080f025 */ or $s8,$a0,$zero -/* f02652c: 8e4e0008 */ lw $t6,0x8($s2) -/* f026530: 00617824 */ and $t7,$v1,$at -/* f026534: 10000001 */ b .L0f02653c -/* f026538: 01cff021 */ addu $s8,$t6,$t7 -.L0f02653c: -/* f02653c: 8e420004 */ lw $v0,0x4($s2) -/* f026540: 3c0100ff */ lui $at,0xff -/* f026544: 50400008 */ beqzl $v0,.L0f026568 -/* f026548: afa00108 */ sw $zero,0x108($sp) -/* f02654c: 8e580008 */ lw $t8,0x8($s2) -/* f026550: 3421ffff */ ori $at,$at,0xffff -/* f026554: 0041c824 */ and $t9,$v0,$at -/* f026558: 03195021 */ addu $t2,$t8,$t9 -/* f02655c: 10000002 */ b .L0f026568 -/* f026560: afaa0108 */ sw $t2,0x108($sp) -/* f026564: afa00108 */ sw $zero,0x108($sp) -.L0f026568: -/* f026568: 83c20000 */ lb $v0,0x0($s8) -/* f02656c: 2401ffb8 */ addiu $at,$zero,-72 -/* f026570: 8fab0108 */ lw $t3,0x108($sp) -/* f026574: 5441000b */ bnel $v0,$at,.L0f0265a4 -/* f026578: 24010004 */ addiu $at,$zero,0x4 -/* f02657c: 51600005 */ beqzl $t3,.L0f026594 -/* f026580: 8fa50110 */ lw $a1,0x110($sp) -/* f026584: 0160f025 */ or $s8,$t3,$zero -/* f026588: 1000fff7 */ b .L0f026568 -/* f02658c: afa00108 */ sw $zero,0x108($sp) -/* f026590: 8fa50110 */ lw $a1,0x110($sp) -.L0f026594: -/* f026594: 8fa40128 */ lw $a0,0x128($sp) -/* f026598: 100000aa */ b .L0f026844 -/* f02659c: 8ca20014 */ lw $v0,0x14($a1) -/* f0265a0: 24010004 */ addiu $at,$zero,0x4 -.L0f0265a4: -/* f0265a4: 1441007c */ bne $v0,$at,.L0f026798 -/* f0265a8: 8fb80100 */ lw $t8,0x100($sp) -/* f0265ac: 8fd50004 */ lw $s5,0x4($s8) -/* f0265b0: 93d60001 */ lbu $s6,0x1($s8) -/* f0265b4: 3c0100ff */ lui $at,0xff -/* f0265b8: 8e4e000c */ lw $t6,0xc($s2) -/* f0265bc: 3421ffff */ ori $at,$at,0xffff -/* f0265c0: 02a16824 */ and $t5,$s5,$at -/* f0265c4: 00167902 */ srl $t7,$s6,0x4 -/* f0265c8: 01a0a825 */ or $s5,$t5,$zero -/* f0265cc: 25f60001 */ addiu $s6,$t7,0x1 -/* f0265d0: 13000089 */ beqz $t8,.L0f0267f8 -/* f0265d4: 01cd1021 */ addu $v0,$t6,$t5 -/* f0265d8: 1ac00087 */ blez $s6,.L0f0267f8 -/* f0265dc: 00009825 */ or $s3,$zero,$zero -/* f0265e0: 0000a025 */ or $s4,$zero,$zero -/* f0265e4: 00408825 */ or $s1,$v0,$zero -.L0f0265e8: -/* f0265e8: c7aa00e8 */ lwc1 $f10,0xe8($sp) -/* f0265ec: c7b200ec */ lwc1 $f18,0xec($sp) -/* f0265f0: c7a600f0 */ lwc1 $f6,0xf0($sp) -/* f0265f4: 4600540d */ trunc.w.s $f16,$f10 -/* f0265f8: 862b0000 */ lh $t3,0x0($s1) -/* f0265fc: 862e0002 */ lh $t6,0x2($s1) -/* f026600: 4600910d */ trunc.w.s $f4,$f18 -/* f026604: 440a8000 */ mfc1 $t2,$f16 -/* f026608: 86390004 */ lh $t9,0x4($s1) -/* f02660c: 4600320d */ trunc.w.s $f8,$f6 -/* f026610: 014b1021 */ addu $v0,$t2,$t3 -/* f026614: 8faa0114 */ lw $t2,0x114($sp) -/* f026618: 440d2000 */ mfc1 $t5,$f4 -/* f02661c: 44184000 */ mfc1 $t8,$f8 -/* f026620: 8fab0118 */ lw $t3,0x118($sp) -/* f026624: 01ae1821 */ addu $v1,$t5,$t6 -/* f026628: 144a0055 */ bne $v0,$t2,.L0f026780 -/* f02662c: 03192021 */ addu $a0,$t8,$t9 -/* f026630: 146b0053 */ bne $v1,$t3,.L0f026780 -/* f026634: 8fac011c */ lw $t4,0x11c($sp) -/* f026638: 548c0052 */ bnel $a0,$t4,.L0f026784 -/* f02663c: 26730001 */ addiu $s3,$s3,0x1 -/* f026640: 864e0010 */ lh $t6,0x10($s2) -/* f026644: 8e4d000c */ lw $t5,0xc($s2) -/* f026648: 8e030008 */ lw $v1,0x8($s0) -/* f02664c: 01d70019 */ multu $t6,$s7 -/* f026650: 00007812 */ mflo $t7 -/* f026654: 01af2021 */ addu $a0,$t5,$t7 -/* f026658: 24840007 */ addiu $a0,$a0,0x7 -/* f02665c: 34980007 */ ori $t8,$a0,0x7 -/* f026660: 3b190007 */ xori $t9,$t8,0x7 -/* f026664: 17230031 */ bne $t9,$v1,.L0f02672c -/* f026668: 03202025 */ or $a0,$t9,$zero -/* f02666c: 96440016 */ lhu $a0,0x16($s2) -/* f026670: 24050002 */ addiu $a1,$zero,0x2 -/* f026674: 00003025 */ or $a2,$zero,$zero -/* f026678: 0fc4a557 */ jal vtxstoreAllocate -/* f02667c: 00003825 */ or $a3,$zero,$zero -/* f026680: 50400020 */ beqzl $v0,.L0f026704 -/* f026684: 864d0010 */ lh $t5,0x10($s2) -/* f026688: 964a0016 */ lhu $t2,0x16($s2) -/* f02668c: 00001825 */ or $v1,$zero,$zero -/* f026690: 00002025 */ or $a0,$zero,$zero -/* f026694: 5940000e */ blezl $t2,.L0f0266d0 -/* f026698: ae020008 */ sw $v0,0x8($s0) -/* f02669c: 00402825 */ or $a1,$v0,$zero -/* f0266a0: 8e0b0008 */ lw $t3,0x8($s0) -.L0f0266a4: -/* f0266a4: 24630001 */ addiu $v1,$v1,0x1 -/* f0266a8: 24a50004 */ addiu $a1,$a1,0x4 -/* f0266ac: 01646021 */ addu $t4,$t3,$a0 -/* f0266b0: 8d810000 */ lw $at,0x0($t4) -/* f0266b4: 24840004 */ addiu $a0,$a0,0x4 -/* f0266b8: aca1fffc */ sw $at,-0x4($a1) -/* f0266bc: 964f0016 */ lhu $t7,0x16($s2) -/* f0266c0: 006f082a */ slt $at,$v1,$t7 -/* f0266c4: 5420fff7 */ bnezl $at,.L0f0266a4 -/* f0266c8: 8e0b0008 */ lw $t3,0x8($s0) -/* f0266cc: ae020008 */ sw $v0,0x8($s0) -.L0f0266d0: -/* f0266d0: 86590010 */ lh $t9,0x10($s2) -/* f0266d4: 8e58000c */ lw $t8,0xc($s2) -/* f0266d8: 00401825 */ or $v1,$v0,$zero -/* f0266dc: 00195080 */ sll $t2,$t9,0x2 -/* f0266e0: 01595023 */ subu $t2,$t2,$t9 -/* f0266e4: 000a5080 */ sll $t2,$t2,0x2 -/* f0266e8: 030a2021 */ addu $a0,$t8,$t2 -/* f0266ec: 24840007 */ addiu $a0,$a0,0x7 -/* f0266f0: 348b0007 */ ori $t3,$a0,0x7 -/* f0266f4: 396e0007 */ xori $t6,$t3,0x7 -/* f0266f8: 1000000c */ b .L0f02672c -/* f0266fc: 01c02025 */ or $a0,$t6,$zero -/* f026700: 864d0010 */ lh $t5,0x10($s2) -.L0f026704: -/* f026704: 8e4c000c */ lw $t4,0xc($s2) -/* f026708: 8e030008 */ lw $v1,0x8($s0) -/* f02670c: 000d7880 */ sll $t7,$t5,0x2 -/* f026710: 01ed7823 */ subu $t7,$t7,$t5 -/* f026714: 000f7880 */ sll $t7,$t7,0x2 -/* f026718: 018f2021 */ addu $a0,$t4,$t7 -/* f02671c: 24840007 */ addiu $a0,$a0,0x7 -/* f026720: 34990007 */ ori $t9,$a0,0x7 -/* f026724: 3b380007 */ xori $t8,$t9,0x7 -/* f026728: 03002025 */ or $a0,$t8,$zero -.L0f02672c: -/* f02672c: 10830014 */ beq $a0,$v1,.L0f026780 -/* f026730: 8fb900c0 */ lw $t9,0xc0($sp) -/* f026734: 02b7001b */ divu $zero,$s5,$s7 -/* f026738: 00005812 */ mflo $t3 -/* f02673c: 8e0a0000 */ lw $t2,0x0($s0) -/* f026740: 000b7080 */ sll $t6,$t3,0x2 -/* f026744: 01cb7023 */ subu $t6,$t6,$t3 -/* f026748: 000e7080 */ sll $t6,$t6,0x2 -/* f02674c: 014e6821 */ addu $t5,$t2,$t6 -/* f026750: 01b46021 */ addu $t4,$t5,$s4 -/* f026754: 91820007 */ lbu $v0,0x7($t4) -/* f026758: 8fb800cc */ lw $t8,0xcc($sp) -/* f02675c: 00792021 */ addu $a0,$v1,$t9 -/* f026760: 00027883 */ sra $t7,$v0,0x2 -/* f026764: 000f5880 */ sll $t3,$t7,0x2 -/* f026768: 008b5021 */ addu $t2,$a0,$t3 -/* f02676c: 01e01025 */ or $v0,$t7,$zero -/* f026770: 16e00002 */ bnez $s7,.L0f02677c -/* f026774: 00000000 */ nop -/* f026778: 0007000d */ break 0x7 -.L0f02677c: -/* f02677c: a1580003 */ sb $t8,0x3($t2) -.L0f026780: -/* f026780: 26730001 */ addiu $s3,$s3,0x1 -.L0f026784: -/* f026784: 2694000c */ addiu $s4,$s4,0xc -/* f026788: 1676ff97 */ bne $s3,$s6,.L0f0265e8 -/* f02678c: 2631000c */ addiu $s1,$s1,0xc -/* f026790: 1000ff75 */ b .L0f026568 -/* f026794: 27de0008 */ addiu $s8,$s8,0x8 -.L0f026798: -/* f026798: 24010001 */ addiu $at,$zero,0x1 -/* f02679c: 1441000e */ bne $v0,$at,.L0f0267d8 -/* f0267a0: 8fa40128 */ lw $a0,0x128($sp) -/* f0267a4: 8fc20004 */ lw $v0,0x4($s8) -/* f0267a8: 3c0100ff */ lui $at,0xff -/* f0267ac: 3421ffff */ ori $at,$at,0xffff -/* f0267b0: 00417024 */ and $t6,$v0,$at -/* f0267b4: 0c00698d */ jal modelFindNodeByMtxIndex -/* f0267b8: 000e2982 */ srl $a1,$t6,0x6 -/* f0267bc: afa20100 */ sw $v0,0x100($sp) -/* f0267c0: 8fa40128 */ lw $a0,0x128($sp) -/* f0267c4: 00402825 */ or $a1,$v0,$zero -/* f0267c8: 0c006b57 */ jal modelNodeGetModelRelativePosition -/* f0267cc: 27a600e8 */ addiu $a2,$sp,0xe8 -/* f0267d0: 1000ff65 */ b .L0f026568 -/* f0267d4: 27de0008 */ addiu $s8,$s8,0x8 -.L0f0267d8: -/* f0267d8: 24010007 */ addiu $at,$zero,0x7 -/* f0267dc: 14410006 */ bne $v0,$at,.L0f0267f8 -/* f0267e0: 00000000 */ nop -/* f0267e4: 8fcd0004 */ lw $t5,0x4($s8) -/* f0267e8: 3c0100ff */ lui $at,0xff -/* f0267ec: 3421ffff */ ori $at,$at,0xffff -/* f0267f0: 01a16024 */ and $t4,$t5,$at -/* f0267f4: afac00c0 */ sw $t4,0xc0($sp) -.L0f0267f8: -/* f0267f8: 1000ff5b */ b .L0f026568 -/* f0267fc: 27de0008 */ addiu $s8,$s8,0x8 -.L0f026800: -/* f026800: 0c0071e1 */ jal modelApplyDistanceRelations -/* f026804: afa50110 */ sw $a1,0x110($sp) -/* f026808: 8fa50110 */ lw $a1,0x110($sp) -/* f02680c: 8fa40128 */ lw $a0,0x128($sp) -/* f026810: 1000000c */ b .L0f026844 -/* f026814: 8ca20014 */ lw $v0,0x14($a1) -.L0f026818: -/* f026818: 0c0071f4 */ jal modelApplyToggleRelations -/* f02681c: afa50110 */ sw $a1,0x110($sp) -/* f026820: 8fa50110 */ lw $a1,0x110($sp) -/* f026824: 8fa40128 */ lw $a0,0x128($sp) -/* f026828: 10000006 */ b .L0f026844 -/* f02682c: 8ca20014 */ lw $v0,0x14($a1) -.L0f026830: -/* f026830: 0c007207 */ jal modelApplyHeadRelations -/* f026834: afa50110 */ sw $a1,0x110($sp) -/* f026838: 8fa50110 */ lw $a1,0x110($sp) -/* f02683c: 8fa40128 */ lw $a0,0x128($sp) -/* f026840: 8ca20014 */ lw $v0,0x14($a1) -.L0f026844: -/* f026844: 10400003 */ beqz $v0,.L0f026854 -/* f026848: 00000000 */ nop -/* f02684c: 1000000d */ b .L0f026884 -/* f026850: 00402825 */ or $a1,$v0,$zero -.L0f026854: -/* f026854: 10a0000b */ beqz $a1,.L0f026884 -/* f026858: 00000000 */ nop -.L0f02685c: -/* f02685c: 50a00007 */ beqzl $a1,.L0f02687c -/* f026860: 8ca50008 */ lw $a1,0x8($a1) -/* f026864: 8ca2000c */ lw $v0,0xc($a1) -/* f026868: 50400004 */ beqzl $v0,.L0f02687c -/* f02686c: 8ca50008 */ lw $a1,0x8($a1) -/* f026870: 10000004 */ b .L0f026884 -/* f026874: 00402825 */ or $a1,$v0,$zero -/* f026878: 8ca50008 */ lw $a1,0x8($a1) -.L0f02687c: -/* f02687c: 14a0fff7 */ bnez $a1,.L0f02685c -/* f026880: 00000000 */ nop -.L0f026884: -/* f026884: 54a0ff0d */ bnezl $a1,.L0f0264bc -/* f026888: 94a20000 */ lhu $v0,0x0($a1) -.L0f02688c: -/* f02688c: 8fbf003c */ lw $ra,0x3c($sp) -.L0f026890: -/* f026890: 8fb00018 */ lw $s0,0x18($sp) -/* f026894: 8fb1001c */ lw $s1,0x1c($sp) -/* f026898: 8fb20020 */ lw $s2,0x20($sp) -/* f02689c: 8fb30024 */ lw $s3,0x24($sp) -/* f0268a0: 8fb40028 */ lw $s4,0x28($sp) -/* f0268a4: 8fb5002c */ lw $s5,0x2c($sp) -/* f0268a8: 8fb60030 */ lw $s6,0x30($sp) -/* f0268ac: 8fb70034 */ lw $s7,0x34($sp) -/* f0268b0: 8fbe0038 */ lw $s8,0x38($sp) -/* f0268b4: 03e00008 */ jr $ra -/* f0268b8: 27bd0128 */ addiu $sp,$sp,0x128 -); -#else -// Mismatch: The bottom two tmp calculations should multiply by s32 0xc using -// shift operations, however doing this causes it to boot gdlptr out of s8 and -// use s8 for s32 0xc. void chr0f0260c4(struct model *model, s32 hitpart, struct modelnode *node, struct coord *arg3) { struct modelnode *bestnode = NULL; @@ -4449,9 +3881,7 @@ void chr0f0260c4(struct model *model, s32 hitpart, struct modelnode *node, struc s32 z = vertices[i].z + (s32)spd4.f[2]; if (x == bestcoords[0] && y == bestcoords[1] && z == bestcoords[2]) { - u32 tmp = ALIGN8((uintptr_t)&rodata->vertices[(u32)rodata->numvertices]); // u32 0xc - - if ((uintptr_t)rwdata->colours == tmp) { + if ((uintptr_t)rwdata->colours == ALIGN8((uintptr_t)rodata->vertices + rodata->numvertices * sizeof(struct gfxvtx))) { struct colour *colours = vtxstoreAllocate(rodata->numcolours, VTXSTORETYPE_CHRCOL, 0, 0); s32 j; @@ -4461,15 +3891,13 @@ void chr0f0260c4(struct model *model, s32 hitpart, struct modelnode *node, struc } rwdata->colours = colours; - - tmp = ALIGN8((intptr_t)&rodata->vertices[rodata->numvertices]); // s32 0xc } else { - tmp = ALIGN8((intptr_t)&rodata->vertices[rodata->numvertices]); // s32 0xc + // empty } } - if ((uintptr_t)rwdata->colours != tmp) { - u32 offset = rwdata->vertices[word / 12u + i].colour >> 2; // u32 0xc (both divide and mult) + if ((uintptr_t)rwdata->colours != ALIGN8((uintptr_t)rodata->vertices + rodata->numvertices * sizeof(struct gfxvtx))) { + s32 offset = rwdata->vertices[word / sizeof(struct gfxvtx) + i].colour >> 2; struct colour *colours = (struct colour *) ((uintptr_t)rwdata->colours + spac); colours[offset].a = alpha; @@ -4514,7 +3942,6 @@ void chr0f0260c4(struct model *model, s32 hitpart, struct modelnode *node, struc } } } -#endif /** * Bruise a chr by darkening their vertices.