Decompile body0f02ce8c
This commit is contained in:
parent
fdfcbb342c
commit
d643543085
578
src/game/body.c
578
src/game/body.c
|
|
@ -165,466 +165,126 @@ bool bodyLoad(s32 bodynum)
|
|||
return false;
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel body0f02ce8c
|
||||
.late_rodata
|
||||
glabel var7f1a8a70
|
||||
.word 0x3dccccce
|
||||
glabel var7f1a8a74
|
||||
.word 0x3f4ccccd
|
||||
glabel var7f1a8a78
|
||||
.word 0x3d4ccccd
|
||||
glabel var7f1a8a7c
|
||||
.word 0x3ecccccd
|
||||
glabel var7f1a8a80
|
||||
.word 0x3ecccccd
|
||||
glabel var7f1a8a84
|
||||
.word 0x3dcccccd
|
||||
.text
|
||||
/* f02ce8c: 00047880 */ sll $t7,$a0,0x2
|
||||
/* f02ce90: 01e47821 */ addu $t7,$t7,$a0
|
||||
/* f02ce94: 3c188008 */ lui $t8,%hi(g_HeadsAndBodies)
|
||||
/* f02ce98: 2718cf04 */ addiu $t8,$t8,%lo(g_HeadsAndBodies)
|
||||
/* f02ce9c: 000f7880 */ sll $t7,$t7,0x2
|
||||
/* f02cea0: 01f81021 */ addu $v0,$t7,$t8
|
||||
/* f02cea4: 3c017f1b */ lui $at,%hi(var7f1a8a70)
|
||||
/* f02cea8: c4268a70 */ lwc1 $f6,%lo(var7f1a8a70)($at)
|
||||
/* f02ceac: c4440004 */ lwc1 $f4,0x4($v0)
|
||||
/* f02ceb0: 27bdffb8 */ addiu $sp,$sp,-72
|
||||
/* f02ceb4: c44a0008 */ lwc1 $f10,0x8($v0)
|
||||
/* f02ceb8: 46062202 */ mul.s $f8,$f4,$f6
|
||||
/* f02cebc: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* f02cec0: afa40048 */ sw $a0,0x48($sp)
|
||||
/* f02cec4: afa5004c */ sw $a1,0x4c($sp)
|
||||
/* f02cec8: afa60050 */ sw $a2,0x50($sp)
|
||||
/* f02cecc: afa70054 */ sw $a3,0x54($sp)
|
||||
/* f02ced0: afa0003c */ sw $zero,0x3c($sp)
|
||||
/* f02ced4: e7a80044 */ swc1 $f8,0x44($sp)
|
||||
/* f02ced8: 24040007 */ addiu $a0,$zero,0x7
|
||||
/* f02cedc: afa2001c */ sw $v0,0x1c($sp)
|
||||
/* f02cee0: 0fc41b99 */ jal cheatIsActive
|
||||
/* f02cee4: e7aa0040 */ swc1 $f10,0x40($sp)
|
||||
/* f02cee8: 10400005 */ beqz $v0,.L0f02cf00
|
||||
/* f02ceec: c7b00044 */ lwc1 $f16,0x44($sp)
|
||||
/* f02cef0: 3c017f1b */ lui $at,%hi(var7f1a8a74)
|
||||
/* f02cef4: c4328a74 */ lwc1 $f18,%lo(var7f1a8a74)($at)
|
||||
/* f02cef8: 46128102 */ mul.s $f4,$f16,$f18
|
||||
/* f02cefc: e7a40044 */ swc1 $f4,0x44($sp)
|
||||
.L0f02cf00:
|
||||
/* f02cf00: 8fb90050 */ lw $t9,0x50($sp)
|
||||
/* f02cf04: 8fa8001c */ lw $t0,0x1c($sp)
|
||||
/* f02cf08: 1720000a */ bnez $t9,.L0f02cf34
|
||||
/* f02cf0c: 00000000 */ nop
|
||||
/* f02cf10: 8d03000c */ lw $v1,0xc($t0)
|
||||
/* f02cf14: 54600007 */ bnezl $v1,.L0f02cf34
|
||||
/* f02cf18: afa30050 */ sw $v1,0x50($sp)
|
||||
/* f02cf1c: 0fc69e11 */ jal modeldefLoadToNew
|
||||
/* f02cf20: 95040002 */ lhu $a0,0x2($t0)
|
||||
/* f02cf24: 8fa4001c */ lw $a0,0x1c($sp)
|
||||
/* f02cf28: 00401825 */ or $v1,$v0,$zero
|
||||
/* f02cf2c: ac82000c */ sw $v0,0xc($a0)
|
||||
/* f02cf30: afa30050 */ sw $v1,0x50($sp)
|
||||
.L0f02cf34:
|
||||
/* f02cf34: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f02cf38: 8fa40050 */ lw $a0,0x50($sp)
|
||||
/* f02cf3c: 8fa9001c */ lw $t1,0x1c($sp)
|
||||
/* f02cf40: 8fac0050 */ lw $t4,0x50($sp)
|
||||
/* f02cf44: 8d220000 */ lw $v0,0x0($t1)
|
||||
/* f02cf48: 00025840 */ sll $t3,$v0,0x1
|
||||
/* f02cf4c: 056200b9 */ bltzl $t3,.L0f02d234
|
||||
/* f02cf50: 8fa2005c */ lw $v0,0x5c($sp)
|
||||
/* f02cf54: 8d830004 */ lw $v1,0x4($t4)
|
||||
/* f02cf58: 3c0d8008 */ lui $t5,%hi(g_SkelChr)
|
||||
/* f02cf5c: 25adce40 */ addiu $t5,$t5,%lo(g_SkelChr)
|
||||
/* f02cf60: 15a30090 */ bne $t5,$v1,.L0f02d1a4
|
||||
/* f02cf64: 01802025 */ or $a0,$t4,$zero
|
||||
/* f02cf68: 0c006a47 */ jal modelGetPart
|
||||
/* f02cf6c: 24050004 */ addiu $a1,$zero,0x4
|
||||
/* f02cf70: 104000af */ beqz $v0,.L0f02d230
|
||||
/* f02cf74: afa2003c */ sw $v0,0x3c($sp)
|
||||
/* f02cf78: 8fa7004c */ lw $a3,0x4c($sp)
|
||||
/* f02cf7c: 240effff */ addiu $t6,$zero,-1
|
||||
/* f02cf80: 04e1000a */ bgez $a3,.L0f02cfac
|
||||
/* f02cf84: 01c72023 */ subu $a0,$t6,$a3
|
||||
/* f02cf88: 0fc6395f */ jal func0f18e57c
|
||||
/* f02cf8c: 27a5004c */ addiu $a1,$sp,0x4c
|
||||
/* f02cf90: 8faf0050 */ lw $t7,0x50($sp)
|
||||
/* f02cf94: afa20054 */ sw $v0,0x54($sp)
|
||||
/* f02cf98: 84590014 */ lh $t9,0x14($v0)
|
||||
/* f02cf9c: 85f80014 */ lh $t8,0x14($t7)
|
||||
/* f02cfa0: 03194021 */ addu $t0,$t8,$t9
|
||||
/* f02cfa4: 10000061 */ b .L0f02d12c
|
||||
/* f02cfa8: a5e80014 */ sh $t0,0x14($t7)
|
||||
.L0f02cfac:
|
||||
/* f02cfac: 18e0005f */ blez $a3,.L0f02d12c
|
||||
/* f02cfb0: 8fa90054 */ lw $t1,0x54($sp)
|
||||
/* f02cfb4: 15200036 */ bnez $t1,.L0f02d090
|
||||
/* f02cfb8: 3c0a800a */ lui $t2,%hi(g_Vars+0x318)
|
||||
/* f02cfbc: 8d4aa2d8 */ lw $t2,%lo(g_Vars+0x318)($t2)
|
||||
/* f02cfc0: 00074080 */ sll $t0,$a3,0x2
|
||||
/* f02cfc4: 3c0b8009 */ lui $t3,%hi(g_Is4Mb)
|
||||
/* f02cfc8: 1140001e */ beqz $t2,.L0f02d044
|
||||
/* f02cfcc: 01074021 */ addu $t0,$t0,$a3
|
||||
/* f02cfd0: 916b0af0 */ lbu $t3,%lo(g_Is4Mb)($t3)
|
||||
/* f02cfd4: 24010001 */ addiu $at,$zero,0x1
|
||||
/* f02cfd8: 00076880 */ sll $t5,$a3,0x2
|
||||
/* f02cfdc: 11610019 */ beq $t3,$at,.L0f02d044
|
||||
/* f02cfe0: 01a76821 */ addu $t5,$t5,$a3
|
||||
/* f02cfe4: 000d6880 */ sll $t5,$t5,0x2
|
||||
/* f02cfe8: 3c048008 */ lui $a0,%hi(g_HeadsAndBodies+0x2)
|
||||
/* f02cfec: 008d2021 */ addu $a0,$a0,$t5
|
||||
/* f02cff0: 0fc69e11 */ jal modeldefLoadToNew
|
||||
/* f02cff4: 9484cf06 */ lhu $a0,%lo(g_HeadsAndBodies+0x2)($a0)
|
||||
/* f02cff8: 8fa5004c */ lw $a1,0x4c($sp)
|
||||
/* f02cffc: 3c0e8008 */ lui $t6,%hi(g_HeadsAndBodies)
|
||||
/* f02d000: 25cecf04 */ addiu $t6,$t6,%lo(g_HeadsAndBodies)
|
||||
/* f02d004: 00056080 */ sll $t4,$a1,0x2
|
||||
/* f02d008: 01856021 */ addu $t4,$t4,$a1
|
||||
/* f02d00c: 000c6080 */ sll $t4,$t4,0x2
|
||||
/* f02d010: 018e1821 */ addu $v1,$t4,$t6
|
||||
/* f02d014: 94780002 */ lhu $t8,0x2($v1)
|
||||
/* f02d018: 3c01800a */ lui $at,%hi(g_FileInfo)
|
||||
/* f02d01c: ac62000c */ sw $v0,0xc($v1)
|
||||
/* f02d020: 0018c8c0 */ sll $t9,$t8,0x3
|
||||
/* f02d024: 00390821 */ addu $at,$at,$t9
|
||||
/* f02d028: afa20054 */ sw $v0,0x54($sp)
|
||||
/* f02d02c: ac206680 */ sw $zero,%lo(g_FileInfo)($at)
|
||||
/* f02d030: 00402025 */ or $a0,$v0,$zero
|
||||
/* f02d034: 0fc0b76f */ jal bodyCalculateHeadOffset
|
||||
/* f02d038: 8fa60048 */ lw $a2,0x48($sp)
|
||||
/* f02d03c: 10000014 */ b .L0f02d090
|
||||
/* f02d040: 00000000 */ nop
|
||||
.L0f02d044:
|
||||
/* f02d044: 3c0f8008 */ lui $t7,%hi(g_HeadsAndBodies)
|
||||
/* f02d048: 25efcf04 */ addiu $t7,$t7,%lo(g_HeadsAndBodies)
|
||||
/* f02d04c: 00084080 */ sll $t0,$t0,0x2
|
||||
/* f02d050: 010f1821 */ addu $v1,$t0,$t7
|
||||
/* f02d054: 8c64000c */ lw $a0,0xc($v1)
|
||||
/* f02d058: 5480000d */ bnezl $a0,.L0f02d090
|
||||
/* f02d05c: afa40054 */ sw $a0,0x54($sp)
|
||||
/* f02d060: 0fc69e11 */ jal modeldefLoadToNew
|
||||
/* f02d064: 94640002 */ lhu $a0,0x2($v1)
|
||||
/* f02d068: 8fa7004c */ lw $a3,0x4c($sp)
|
||||
/* f02d06c: 3c0a8008 */ lui $t2,%hi(g_HeadsAndBodies)
|
||||
/* f02d070: 254acf04 */ addiu $t2,$t2,%lo(g_HeadsAndBodies)
|
||||
/* f02d074: 00074880 */ sll $t1,$a3,0x2
|
||||
/* f02d078: 01274821 */ addu $t1,$t1,$a3
|
||||
/* f02d07c: 00094880 */ sll $t1,$t1,0x2
|
||||
/* f02d080: 012a1821 */ addu $v1,$t1,$t2
|
||||
/* f02d084: ac62000c */ sw $v0,0xc($v1)
|
||||
/* f02d088: 00402025 */ or $a0,$v0,$zero
|
||||
/* f02d08c: afa40054 */ sw $a0,0x54($sp)
|
||||
.L0f02d090:
|
||||
/* f02d090: 0c008b49 */ jal modelCalculateRwDataLen
|
||||
/* f02d094: 8fa40054 */ lw $a0,0x54($sp)
|
||||
/* f02d098: 8fab0050 */ lw $t3,0x50($sp)
|
||||
/* f02d09c: 8fac0054 */ lw $t4,0x54($sp)
|
||||
/* f02d0a0: 856d0014 */ lh $t5,0x14($t3)
|
||||
/* f02d0a4: 858e0014 */ lh $t6,0x14($t4)
|
||||
/* f02d0a8: 01aec021 */ addu $t8,$t5,$t6
|
||||
/* f02d0ac: a5780014 */ sh $t8,0x14($t3)
|
||||
/* f02d0b0: 8fb9001c */ lw $t9,0x1c($sp)
|
||||
/* f02d0b4: 93aa0067 */ lbu $t2,0x67($sp)
|
||||
/* f02d0b8: 8f280000 */ lw $t0,0x0($t9)
|
||||
/* f02d0bc: 00084880 */ sll $t1,$t0,0x2
|
||||
/* f02d0c0: 0523001b */ bgezl $t1,.L0f02d130
|
||||
/* f02d0c4: 8fac0060 */ lw $t4,0x60($sp)
|
||||
/* f02d0c8: 51400019 */ beqzl $t2,.L0f02d130
|
||||
/* f02d0cc: 8fac0060 */ lw $t4,0x60($sp)
|
||||
/* f02d0d0: 0c004b70 */ jal random
|
||||
/* f02d0d4: 00000000 */ nop
|
||||
/* f02d0d8: 44823000 */ mtc1 $v0,$f6
|
||||
/* f02d0dc: 3c017f1b */ lui $at,%hi(var7f1a8a78)
|
||||
/* f02d0e0: c4228a78 */ lwc1 $f2,%lo(var7f1a8a78)($at)
|
||||
/* f02d0e4: 04410005 */ bgez $v0,.L0f02d0fc
|
||||
/* f02d0e8: 46803220 */ cvt.s.w $f8,$f6
|
||||
/* f02d0ec: 3c014f80 */ lui $at,0x4f80
|
||||
/* f02d0f0: 44815000 */ mtc1 $at,$f10
|
||||
/* f02d0f4: 00000000 */ nop
|
||||
/* f02d0f8: 460a4200 */ add.s $f8,$f8,$f10
|
||||
.L0f02d0fc:
|
||||
/* f02d0fc: 3c012f80 */ lui $at,0x2f80
|
||||
/* f02d100: 44818000 */ mtc1 $at,$f16
|
||||
/* f02d104: 3c013f80 */ lui $at,0x3f80
|
||||
/* f02d108: 44815000 */ mtc1 $at,$f10
|
||||
/* f02d10c: 46104482 */ mul.s $f18,$f8,$f16
|
||||
/* f02d110: c7b00044 */ lwc1 $f16,0x44($sp)
|
||||
/* f02d114: 46029002 */ mul.s $f0,$f18,$f2
|
||||
/* f02d118: 46000100 */ add.s $f4,$f0,$f0
|
||||
/* f02d11c: 46022181 */ sub.s $f6,$f4,$f2
|
||||
/* f02d120: 460a3200 */ add.s $f8,$f6,$f10
|
||||
/* f02d124: 46088482 */ mul.s $f18,$f16,$f8
|
||||
/* f02d128: e7b20044 */ swc1 $f18,0x44($sp)
|
||||
.L0f02d12c:
|
||||
/* f02d12c: 8fac0060 */ lw $t4,0x60($sp)
|
||||
.L0f02d130:
|
||||
/* f02d130: 15800013 */ bnez $t4,.L0f02d180
|
||||
/* f02d134: 00000000 */ nop
|
||||
/* f02d138: 0fc41b99 */ jal cheatIsActive
|
||||
/* f02d13c: 2404000b */ addiu $a0,$zero,0xb
|
||||
/* f02d140: 10400005 */ beqz $v0,.L0f02d158
|
||||
/* f02d144: c7a40044 */ lwc1 $f4,0x44($sp)
|
||||
/* f02d148: 3c017f1b */ lui $at,%hi(var7f1a8a7c)
|
||||
/* f02d14c: c4268a7c */ lwc1 $f6,%lo(var7f1a8a7c)($at)
|
||||
/* f02d150: 46062282 */ mul.s $f10,$f4,$f6
|
||||
/* f02d154: e7aa0044 */ swc1 $f10,0x44($sp)
|
||||
.L0f02d158:
|
||||
/* f02d158: 0fc41b99 */ jal cheatIsActive
|
||||
/* f02d15c: 24040007 */ addiu $a0,$zero,0x7
|
||||
/* f02d160: 10400033 */ beqz $v0,.L0f02d230
|
||||
/* f02d164: c7b00044 */ lwc1 $f16,0x44($sp)
|
||||
/* f02d168: 3c013fa0 */ lui $at,0x3fa0
|
||||
/* f02d16c: 44814000 */ mtc1 $at,$f8
|
||||
/* f02d170: 00000000 */ nop
|
||||
/* f02d174: 46088482 */ mul.s $f18,$f16,$f8
|
||||
/* f02d178: 1000002d */ b .L0f02d230
|
||||
/* f02d17c: e7b20044 */ swc1 $f18,0x44($sp)
|
||||
.L0f02d180:
|
||||
/* f02d180: 0fc41b99 */ jal cheatIsActive
|
||||
/* f02d184: 2404000a */ addiu $a0,$zero,0xa
|
||||
/* f02d188: 10400029 */ beqz $v0,.L0f02d230
|
||||
/* f02d18c: c7a40044 */ lwc1 $f4,0x44($sp)
|
||||
/* f02d190: 3c017f1b */ lui $at,%hi(var7f1a8a80)
|
||||
/* f02d194: c4268a80 */ lwc1 $f6,%lo(var7f1a8a80)($at)
|
||||
/* f02d198: 46062282 */ mul.s $f10,$f4,$f6
|
||||
/* f02d19c: 10000024 */ b .L0f02d230
|
||||
/* f02d1a0: e7aa0044 */ swc1 $f10,0x44($sp)
|
||||
.L0f02d1a4:
|
||||
/* f02d1a4: 3c0d8008 */ lui $t5,%hi(g_SkelSkedar)
|
||||
/* f02d1a8: 25adce98 */ addiu $t5,$t5,%lo(g_SkelSkedar)
|
||||
/* f02d1ac: 15a30020 */ bne $t5,$v1,.L0f02d230
|
||||
/* f02d1b0: 0002c080 */ sll $t8,$v0,0x2
|
||||
/* f02d1b4: 0701001e */ bgez $t8,.L0f02d230
|
||||
/* f02d1b8: 93ab0067 */ lbu $t3,0x67($sp)
|
||||
/* f02d1bc: 1160001c */ beqz $t3,.L0f02d230
|
||||
/* f02d1c0: 8fb9001c */ lw $t9,0x1c($sp)
|
||||
/* f02d1c4: 3c088008 */ lui $t0,%hi(g_HeadsAndBodies+0x730)
|
||||
/* f02d1c8: 2508d634 */ addiu $t0,$t0,%lo(g_HeadsAndBodies+0x730)
|
||||
/* f02d1cc: 57280019 */ bnel $t9,$t0,.L0f02d234
|
||||
/* f02d1d0: 8fa2005c */ lw $v0,0x5c($sp)
|
||||
/* f02d1d4: 0c004b70 */ jal random
|
||||
/* f02d1d8: 00000000 */ nop
|
||||
/* f02d1dc: 44828000 */ mtc1 $v0,$f16
|
||||
/* f02d1e0: 3c017f1b */ lui $at,%hi(var7f1a8a84)
|
||||
/* f02d1e4: c4228a84 */ lwc1 $f2,%lo(var7f1a8a84)($at)
|
||||
/* f02d1e8: 04410005 */ bgez $v0,.L0f02d200
|
||||
/* f02d1ec: 46808220 */ cvt.s.w $f8,$f16
|
||||
/* f02d1f0: 3c014f80 */ lui $at,0x4f80
|
||||
/* f02d1f4: 44819000 */ mtc1 $at,$f18
|
||||
/* f02d1f8: 00000000 */ nop
|
||||
/* f02d1fc: 46124200 */ add.s $f8,$f8,$f18
|
||||
.L0f02d200:
|
||||
/* f02d200: 3c012f80 */ lui $at,0x2f80
|
||||
/* f02d204: 44812000 */ mtc1 $at,$f4
|
||||
/* f02d208: 3c013f40 */ lui $at,0x3f40
|
||||
/* f02d20c: 44819000 */ mtc1 $at,$f18
|
||||
/* f02d210: 46044182 */ mul.s $f6,$f8,$f4
|
||||
/* f02d214: c7a40044 */ lwc1 $f4,0x44($sp)
|
||||
/* f02d218: 46061002 */ mul.s $f0,$f2,$f6
|
||||
/* f02d21c: 46000280 */ add.s $f10,$f0,$f0
|
||||
/* f02d220: 46025401 */ sub.s $f16,$f10,$f2
|
||||
/* f02d224: 46128200 */ add.s $f8,$f16,$f18
|
||||
/* f02d228: 46082182 */ mul.s $f6,$f4,$f8
|
||||
/* f02d22c: e7a60044 */ swc1 $f6,0x44($sp)
|
||||
.L0f02d230:
|
||||
/* f02d230: 8fa2005c */ lw $v0,0x5c($sp)
|
||||
.L0f02d234:
|
||||
/* f02d234: 8fa90050 */ lw $t1,0x50($sp)
|
||||
/* f02d238: 10400008 */ beqz $v0,.L0f02d25c
|
||||
/* f02d23c: 00000000 */ nop
|
||||
/* f02d240: 844f0002 */ lh $t7,0x2($v0)
|
||||
/* f02d244: 852a0014 */ lh $t2,0x14($t1)
|
||||
/* f02d248: 01ea082a */ slt $at,$t7,$t2
|
||||
/* f02d24c: 50200007 */ beqzl $at,.L0f02d26c
|
||||
/* f02d250: 8fac005c */ lw $t4,0x5c($sp)
|
||||
/* f02d254: 10000005 */ b .L0f02d26c
|
||||
/* f02d258: 8fac005c */ lw $t4,0x5c($sp)
|
||||
.L0f02d25c:
|
||||
/* f02d25c: 0fc2cca0 */ jal modelInstantiateWithAnim
|
||||
/* f02d260: 8fa40050 */ lw $a0,0x50($sp)
|
||||
/* f02d264: afa2005c */ sw $v0,0x5c($sp)
|
||||
/* f02d268: 8fac005c */ lw $t4,0x5c($sp)
|
||||
.L0f02d26c:
|
||||
/* f02d26c: 1180002d */ beqz $t4,.L0f02d324
|
||||
/* f02d270: 01802025 */ or $a0,$t4,$zero
|
||||
/* f02d274: 0c006bd6 */ jal modelSetScale
|
||||
/* f02d278: 8fa50044 */ lw $a1,0x44($sp)
|
||||
/* f02d27c: 8fa4005c */ lw $a0,0x5c($sp)
|
||||
/* f02d280: 0c006bd9 */ jal modelSetAnimScale
|
||||
/* f02d284: 8fa50040 */ lw $a1,0x40($sp)
|
||||
/* f02d288: 8fa60054 */ lw $a2,0x54($sp)
|
||||
/* f02d28c: 8fad001c */ lw $t5,0x1c($sp)
|
||||
/* f02d290: 50c00025 */ beqzl $a2,.L0f02d328
|
||||
/* f02d294: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f02d298: 8dae0000 */ lw $t6,0x0($t5)
|
||||
/* f02d29c: 8fb90050 */ lw $t9,0x50($sp)
|
||||
/* f02d2a0: 000e5840 */ sll $t3,$t6,0x1
|
||||
/* f02d2a4: 05620020 */ bltzl $t3,.L0f02d328
|
||||
/* f02d2a8: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f02d2ac: 87280014 */ lh $t0,0x14($t9)
|
||||
/* f02d2b0: 84c90014 */ lh $t1,0x14($a2)
|
||||
/* f02d2b4: 01097823 */ subu $t7,$t0,$t1
|
||||
/* f02d2b8: a72f0014 */ sh $t7,0x14($t9)
|
||||
/* f02d2bc: 8fa5003c */ lw $a1,0x3c($sp)
|
||||
/* f02d2c0: 0fc2cca8 */ jal func0f0b32a0
|
||||
/* f02d2c4: 8fa4005c */ lw $a0,0x5c($sp)
|
||||
/* f02d2c8: 8faa0054 */ lw $t2,0x54($sp)
|
||||
/* f02d2cc: 2401000d */ addiu $at,$zero,0xd
|
||||
/* f02d2d0: 8fad0058 */ lw $t5,0x58($sp)
|
||||
/* f02d2d4: 854c0006 */ lh $t4,0x6($t2)
|
||||
/* f02d2d8: 55810013 */ bnel $t4,$at,.L0f02d328
|
||||
/* f02d2dc: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* f02d2e0: 15a00008 */ bnez $t5,.L0f02d304
|
||||
/* f02d2e4: 01402025 */ or $a0,$t2,$zero
|
||||
/* f02d2e8: 0c006a47 */ jal modelGetPart
|
||||
/* f02d2ec: 00002825 */ or $a1,$zero,$zero
|
||||
/* f02d2f0: 10400004 */ beqz $v0,.L0f02d304
|
||||
/* f02d2f4: 00402825 */ or $a1,$v0,$zero
|
||||
/* f02d2f8: 0c006a87 */ jal modelGetNodeRwData
|
||||
/* f02d2fc: 8fa4005c */ lw $a0,0x5c($sp)
|
||||
/* f02d300: ac400000 */ sw $zero,0x0($v0)
|
||||
.L0f02d304:
|
||||
/* f02d304: 8fa40054 */ lw $a0,0x54($sp)
|
||||
/* f02d308: 0c006a47 */ jal modelGetPart
|
||||
/* f02d30c: 24050004 */ addiu $a1,$zero,0x4
|
||||
/* f02d310: 10400004 */ beqz $v0,.L0f02d324
|
||||
/* f02d314: 00402825 */ or $a1,$v0,$zero
|
||||
/* f02d318: 0c006a87 */ jal modelGetNodeRwData
|
||||
/* f02d31c: 8fa4005c */ lw $a0,0x5c($sp)
|
||||
/* f02d320: ac400000 */ sw $zero,0x0($v0)
|
||||
.L0f02d324:
|
||||
/* f02d324: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
.L0f02d328:
|
||||
/* f02d328: 8fa2005c */ lw $v0,0x5c($sp)
|
||||
/* f02d32c: 27bd0048 */ addiu $sp,$sp,0x48
|
||||
/* f02d330: 03e00008 */ jr $ra
|
||||
/* f02d334: 00000000 */ nop
|
||||
);
|
||||
struct model *body0f02ce8c(s32 bodynum, s32 headnum, struct modelfiledata *bodyfiledata, struct modelfiledata *headfiledata, bool sunglasses, struct model *model, bool isplayer, u8 varyheight)
|
||||
{
|
||||
f32 scale = g_HeadsAndBodies[bodynum].scale * 0.10000001f;
|
||||
f32 animscale = g_HeadsAndBodies[bodynum].animscale;
|
||||
struct modelnode *node = NULL;
|
||||
u32 stack[2];
|
||||
|
||||
// Mismatch: The model->unk02 < headfiledata->rwdatalen statement needs to use
|
||||
// bodyfiledata instead of headfiledata, but the extra reference to bodyfiledata
|
||||
// causes bodyfiledata to be promoted from t registers to a registers, which
|
||||
// causes significant codegen changes.
|
||||
//struct model *body0f02ce8c(s32 bodynum, s32 headnum, struct modelfiledata *bodyfiledata, struct modelfiledata *headfiledata, bool sunglasses, struct model *model, bool isplayer, u8 varyheight)
|
||||
//{
|
||||
// f32 scale = g_HeadsAndBodies[bodynum].scale * 0.1f;
|
||||
// f32 animscale = g_HeadsAndBodies[bodynum].animscale;
|
||||
// struct modelnode *node = NULL;
|
||||
// u32 stack[2];
|
||||
//
|
||||
// if (cheatIsActive(CHEAT_DKMODE)) {
|
||||
// scale *= 0.8f;
|
||||
// }
|
||||
//
|
||||
// if (bodyfiledata == NULL) {
|
||||
// if (g_HeadsAndBodies[bodynum].filedata == NULL) {
|
||||
// g_HeadsAndBodies[bodynum].filedata = modeldefLoadToNew(g_HeadsAndBodies[bodynum].filenum);
|
||||
// }
|
||||
//
|
||||
// bodyfiledata = g_HeadsAndBodies[bodynum].filedata;
|
||||
// }
|
||||
//
|
||||
// modelCalculateRwDataLen(bodyfiledata);
|
||||
//
|
||||
// if (!g_HeadsAndBodies[bodynum].unk00_01) {
|
||||
// if (bodyfiledata->type == &g_SkelChr) {
|
||||
// node = modelGetPart(bodyfiledata, MODELPART_CHR_HEADSPOT);
|
||||
//
|
||||
// if (node != NULL) {
|
||||
// if (headnum < 0) {
|
||||
// headfiledata = func0f18e57c(-1 - headnum, &headnum);
|
||||
// bodyfiledata->rwdatalen += headfiledata->rwdatalen;
|
||||
// } else if (headnum > 0) {
|
||||
// if (headfiledata == NULL) {
|
||||
// if (g_Vars.normmplayerisrunning && !IS4MB()) {
|
||||
// headfiledata = modeldefLoadToNew(g_HeadsAndBodies[headnum].filenum);
|
||||
// g_HeadsAndBodies[headnum].filedata = headfiledata;
|
||||
// g_FileInfo[g_HeadsAndBodies[headnum].filenum].size = 0;
|
||||
// bodyCalculateHeadOffset(headfiledata, headnum, bodynum);
|
||||
// } else {
|
||||
// if (g_HeadsAndBodies[headnum].filedata == NULL) {
|
||||
// g_HeadsAndBodies[headnum].filedata = modeldefLoadToNew(g_HeadsAndBodies[headnum].filenum);
|
||||
// }
|
||||
//
|
||||
// headfiledata = g_HeadsAndBodies[headnum].filedata;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// modelCalculateRwDataLen(headfiledata);
|
||||
//
|
||||
// bodyfiledata->rwdatalen += headfiledata->rwdatalen;
|
||||
//
|
||||
// if (g_HeadsAndBodies[bodynum].canvaryheight && varyheight) {
|
||||
// // Set height to between 95% and 115%
|
||||
// f32 frac = RANDOMFRAC() * 0.05f;
|
||||
// scale *= 2.0f * frac - 0.05f + 1.0f;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (!isplayer) {
|
||||
// if (cheatIsActive(CHEAT_SMALLCHARACTERS)) {
|
||||
// scale *= 0.4f;
|
||||
// }
|
||||
//
|
||||
// if (cheatIsActive(CHEAT_DKMODE)) {
|
||||
// scale *= 1.25f;
|
||||
// }
|
||||
// } else {
|
||||
// if (cheatIsActive(CHEAT_SMALLJO)) {
|
||||
// scale *= 0.4f;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } else if (bodyfiledata->type == &g_SkelSkedar) {
|
||||
// if (g_HeadsAndBodies[bodynum].canvaryheight && varyheight && bodynum == BODY_SKEDAR) {
|
||||
// // Set height to between 65% and 85%
|
||||
// f32 frac = RANDOMFRAC();
|
||||
// scale *= 2.0f * (0.1f * frac) - 0.1f + 0.75f;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if (model) {
|
||||
// if (model->unk02 < bodyfiledata->rwdatalen) {
|
||||
// // empty
|
||||
// }
|
||||
// } else {
|
||||
// model = modelInstantiateWithAnim(bodyfiledata);
|
||||
// }
|
||||
//
|
||||
// if (model) {
|
||||
// modelSetScale(model, scale);
|
||||
// modelSetAnimScale(model, animscale);
|
||||
//
|
||||
// if (headfiledata && !g_HeadsAndBodies[bodynum].unk00_01) {
|
||||
// bodyfiledata->rwdatalen -= headfiledata->rwdatalen;
|
||||
//
|
||||
// func0f0b32a0(model, node, headfiledata);
|
||||
//
|
||||
// if ((s16)*(s32 *)&headfiledata->type == SKEL_HEAD) {
|
||||
// struct modelnode *node2;
|
||||
//
|
||||
// if (!sunglasses) {
|
||||
// node2 = modelGetPart(headfiledata, MODELPART_HEAD_SUNGLASSES);
|
||||
//
|
||||
// if (node2) {
|
||||
// union modelrwdata *rwdata = modelGetNodeRwData(model, node2);
|
||||
// rwdata->toggle.visible = false;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// node2 = modelGetPart(headfiledata, MODELPART_HEAD_HUDPIECE);
|
||||
//
|
||||
// if (node2) {
|
||||
// union modelrwdata *rwdata = modelGetNodeRwData(model, node2);
|
||||
// rwdata->toggle.visible = false;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// return model;
|
||||
//}
|
||||
if (cheatIsActive(CHEAT_DKMODE)) {
|
||||
scale *= 0.8f;
|
||||
}
|
||||
|
||||
if (bodyfiledata == NULL) {
|
||||
if (g_HeadsAndBodies[bodynum].filedata == NULL) {
|
||||
g_HeadsAndBodies[bodynum].filedata = modeldefLoadToNew(g_HeadsAndBodies[bodynum].filenum);
|
||||
}
|
||||
|
||||
bodyfiledata = g_HeadsAndBodies[bodynum].filedata;
|
||||
}
|
||||
|
||||
modelCalculateRwDataLen(bodyfiledata);
|
||||
|
||||
if (!g_HeadsAndBodies[bodynum].unk00_01) {
|
||||
if (bodyfiledata->skel == &g_SkelChr) {
|
||||
node = modelGetPart(bodyfiledata, MODELPART_CHR_HEADSPOT);
|
||||
|
||||
if (node != NULL) {
|
||||
if (headnum < 0) {
|
||||
headfiledata = func0f18e57c(-1 - headnum, &headnum);
|
||||
bodyfiledata->rwdatalen += headfiledata->rwdatalen;
|
||||
} else if (headnum > 0) {
|
||||
if (headfiledata == NULL) {
|
||||
if (g_Vars.normmplayerisrunning && !IS4MB()) {
|
||||
headfiledata = modeldefLoadToNew(g_HeadsAndBodies[headnum].filenum);
|
||||
g_HeadsAndBodies[headnum].filedata = headfiledata;
|
||||
g_FileInfo[g_HeadsAndBodies[headnum].filenum].loadedsize = 0;
|
||||
bodyCalculateHeadOffset(headfiledata, headnum, bodynum);
|
||||
} else {
|
||||
if (g_HeadsAndBodies[headnum].filedata == NULL) {
|
||||
g_HeadsAndBodies[headnum].filedata = modeldefLoadToNew(g_HeadsAndBodies[headnum].filenum);
|
||||
}
|
||||
|
||||
headfiledata = g_HeadsAndBodies[headnum].filedata;
|
||||
}
|
||||
}
|
||||
|
||||
modelCalculateRwDataLen(headfiledata);
|
||||
|
||||
bodyfiledata->rwdatalen += headfiledata->rwdatalen;
|
||||
|
||||
if (g_HeadsAndBodies[bodynum].canvaryheight && varyheight) {
|
||||
// Set height to between 95% and 115%
|
||||
f32 frac = RANDOMFRAC() * 0.05f;
|
||||
scale *= 2.0f * frac - 0.05f + 1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
if (!isplayer) {
|
||||
if (cheatIsActive(CHEAT_SMALLCHARACTERS)) {
|
||||
scale *= 0.4f;
|
||||
}
|
||||
|
||||
if (cheatIsActive(CHEAT_DKMODE)) {
|
||||
scale *= 1.25f;
|
||||
}
|
||||
} else {
|
||||
if (cheatIsActive(CHEAT_SMALLJO)) {
|
||||
scale *= 0.4f;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (bodyfiledata->skel == &g_SkelSkedar) {
|
||||
if (g_HeadsAndBodies[bodynum].canvaryheight && varyheight && bodynum == BODY_SKEDAR) {
|
||||
// Set height to between 65% and 85%
|
||||
f32 frac = RANDOMFRAC();
|
||||
scale *= 2.0f * (0.1f * frac) - 0.1f + 0.75f;
|
||||
}
|
||||
|
||||
if (1);
|
||||
}
|
||||
}
|
||||
|
||||
if (model) {
|
||||
if (model->unk02 < bodyfiledata->rwdatalen);
|
||||
} else {
|
||||
model = modelInstantiateWithAnim(bodyfiledata);
|
||||
}
|
||||
|
||||
if (model) {
|
||||
modelSetScale(model, scale);
|
||||
modelSetAnimScale(model, animscale);
|
||||
|
||||
if (headfiledata && !g_HeadsAndBodies[bodynum].unk00_01) {
|
||||
bodyfiledata->rwdatalen -= headfiledata->rwdatalen;
|
||||
|
||||
func0f0b32a0(model, node, headfiledata);
|
||||
|
||||
if ((s16)*(s32 *)&headfiledata->skel == SKEL_HEAD) {
|
||||
struct modelnode *node2;
|
||||
|
||||
if (!sunglasses) {
|
||||
node2 = modelGetPart(headfiledata, MODELPART_HEAD_SUNGLASSES);
|
||||
|
||||
if (node2) {
|
||||
union modelrwdata *rwdata = modelGetNodeRwData(model, node2);
|
||||
rwdata->toggle.visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
node2 = modelGetPart(headfiledata, MODELPART_HEAD_HUDPIECE);
|
||||
|
||||
if (node2) {
|
||||
union modelrwdata *rwdata = modelGetNodeRwData(model, node2);
|
||||
rwdata->toggle.visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
struct model *body0f02d338(s32 bodynum, s32 headnum, struct modelfiledata *bodyfiledata, struct modelfiledata *headfiledata, bool sunglasses, u8 varyheight)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue