From 818a3049f640af0dfc7000c115e8063c098b5683 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Fri, 8 Nov 2019 18:51:56 +1000 Subject: [PATCH] Decompile chrGetDistanceToChr --- src/game/chr/chraicommands.c | 22 +++++++-------- src/game/game_000000.c | 55 +++++++++++------------------------- 2 files changed, 27 insertions(+), 50 deletions(-) diff --git a/src/game/chr/chraicommands.c b/src/game/chr/chraicommands.c index f94db6eb3..b64ff0f9a 100644 --- a/src/game/chr/chraicommands.c +++ b/src/game/chr/chraicommands.c @@ -2351,7 +2351,7 @@ glabel ai0056 /* f050e78: 46083282 */ mul.s $f10,$f6,$f8 /* f050e7c: e7aa0018 */ swc1 $f10,0x18($sp) /* f050e80: 90450004 */ lbu $a1,0x4($v0) -/* f050e84: 0fc1272c */ jal func0f049cb0 +/* f050e84: 0fc1272c */ jal chrGetDistanceToChr /* f050e88: afa2001c */ sw $v0,0x1c($sp) /* f050e8c: c7b00018 */ lwc1 $f16,0x18($sp) /* f050e90: 3c03800a */ lui $v1,0x800a @@ -2404,7 +2404,7 @@ glabel ai0057 /* f050f28: 46083282 */ mul.s $f10,$f6,$f8 /* f050f2c: e7aa0018 */ swc1 $f10,0x18($sp) /* f050f30: 90450004 */ lbu $a1,0x4($v0) -/* f050f34: 0fc1272c */ jal func0f049cb0 +/* f050f34: 0fc1272c */ jal chrGetDistanceToChr /* f050f38: afa2001c */ sw $v0,0x1c($sp) /* f050f3c: c7b00018 */ lwc1 $f16,0x18($sp) /* f050f40: 3c03800a */ lui $v1,0x800a @@ -10068,7 +10068,7 @@ glabel ai0120 /* f059430: 848c0000 */ lh $t4,0x0($a0) /* f059434: 50ac000d */ beql $a1,$t4,.L0f05946c /* f059438: 86240002 */ lh $a0,0x2($s1) -/* f05943c: 0fc1272c */ jal func0f049cb0 +/* f05943c: 0fc1272c */ jal chrGetDistanceToChr /* f059440: 00000000 */ sll $zero,$zero,0x0 /* f059444: 3c017f1b */ lui $at,0x7f1b /* f059448: c4249d4c */ lwc1 $f4,-0x62b4($at) @@ -10376,7 +10376,7 @@ glabel ai0127 /* f059aa0: 84880000 */ lh $t0,0x0($a0) /* f059aa4: 10a80016 */ beq $a1,$t0,.L0f059b00 /* f059aa8: 00000000 */ sll $zero,$zero,0x0 -/* f059aac: 0fc1272c */ jal func0f049cb0 +/* f059aac: 0fc1272c */ jal chrGetDistanceToChr /* f059ab0: 00000000 */ sll $zero,$zero,0x0 /* f059ab4: 4614003c */ c.lt.s $f0,$f20 /* f059ab8: 46000086 */ mov.s $f2,$f0 @@ -10562,7 +10562,7 @@ glabel ai0128 /* f059d48: 05c30030 */ bgezl $t6,.L0f059e0c /* f059d4c: 86840002 */ lh $a0,0x2($s4) .L0f059d50: -/* f059d50: 0fc1272c */ jal func0f049cb0 +/* f059d50: 0fc1272c */ jal chrGetDistanceToChr /* f059d54: 86250000 */ lh $a1,0x0($s1) /* f059d58: 461a003c */ c.lt.s $f0,$f26 /* f059d5c: 46000506 */ mov.s $f20,$f0 @@ -10729,7 +10729,7 @@ glabel ai0129 /* f059f98: 848a0000 */ lh $t2,0x0($a0) /* f059f9c: 50aa000b */ beql $a1,$t2,.L0f059fcc /* f059fa0: 86240002 */ lh $a0,0x2($s1) -/* f059fa4: 0fc1272c */ jal func0f049cb0 +/* f059fa4: 0fc1272c */ jal chrGetDistanceToChr /* f059fa8: 00000000 */ sll $zero,$zero,0x0 /* f059fac: 4614003c */ c.lt.s $f0,$f20 /* f059fb0: 00000000 */ sll $zero,$zero,0x0 @@ -11074,7 +11074,7 @@ glabel ai0130 /* f05a550: 00e02025 */ or $a0,$a3,$zero /* f05a554: 50b90019 */ beql $a1,$t9,.L0f05a5bc /* f05a558: 8fa20088 */ lw $v0,0x88($sp) -/* f05a55c: 0fc1272c */ jal func0f049cb0 +/* f05a55c: 0fc1272c */ jal chrGetDistanceToChr /* f05a560: afa60064 */ sw $a2,0x64($sp) /* f05a564: 3c017f1b */ lui $at,0x7f1b /* f05a568: c4249d64 */ lwc1 $f4,-0x629c($at) @@ -11620,7 +11620,7 @@ glabel ai0131 /* f05ad64: 848b0000 */ lh $t3,0x0($a0) /* f05ad68: 50ab000f */ beql $a1,$t3,.L0f05ada8 /* f05ad6c: 86240002 */ lh $a0,0x2($s1) -/* f05ad70: 0fc1272c */ jal func0f049cb0 +/* f05ad70: 0fc1272c */ jal chrGetDistanceToChr /* f05ad74: 00000000 */ sll $zero,$zero,0x0 /* f05ad78: 4614003c */ c.lt.s $f0,$f20 /* f05ad7c: 02e02825 */ or $a1,$s7,$zero @@ -11749,7 +11749,7 @@ glabel ai0133 /* f05af3c: 54410010 */ bnel $v0,$at,.L0f05af80 /* f05af40: 86240002 */ lh $a0,0x2($s1) .L0f05af44: -/* f05af44: 0fc1272c */ jal func0f049cb0 +/* f05af44: 0fc1272c */ jal chrGetDistanceToChr /* f05af48: 00000000 */ sll $zero,$zero,0x0 /* f05af4c: 3c017f1b */ lui $at,0x7f1b /* f05af50: c4249d68 */ lwc1 $f4,-0x6298($at) @@ -12160,7 +12160,7 @@ glabel ai0137 /* f05b4a8: 848a0000 */ lh $t2,0x0($a0) /* f05b4ac: 50aa000f */ beql $a1,$t2,.L0f05b4ec /* f05b4b0: 86240002 */ lh $a0,0x2($s1) -/* f05b4b4: 0fc1272c */ jal func0f049cb0 +/* f05b4b4: 0fc1272c */ jal chrGetDistanceToChr /* f05b4b8: 00000000 */ sll $zero,$zero,0x0 /* f05b4bc: 4614003c */ c.lt.s $f0,$f20 /* f05b4c0: 00000000 */ sll $zero,$zero,0x0 @@ -12330,7 +12330,7 @@ glabel ai013a /* f05b6fc: 848e0000 */ lh $t6,0x0($a0) /* f05b700: 50ae0028 */ beql $a1,$t6,.L0f05b7a4 /* f05b704: 86240002 */ lh $a0,0x2($s1) -/* f05b708: 0fc1272c */ jal func0f049cb0 +/* f05b708: 0fc1272c */ jal chrGetDistanceToChr /* f05b70c: 00000000 */ sll $zero,$zero,0x0 /* f05b710: 4614003c */ c.lt.s $f0,$f20 /* f05b714: 00000000 */ sll $zero,$zero,0x0 diff --git a/src/game/game_000000.c b/src/game/game_000000.c index ea400df1e..cdaf7014b 100644 --- a/src/game/game_000000.c +++ b/src/game/game_000000.c @@ -53269,7 +53269,7 @@ glabel func0f02e370 /* f02e390: 30af0004 */ andi $t7,$a1,0x4 /* f02e394: 11e00005 */ beqz $t7,.L0f02e3ac /* f02e398: 30b80008 */ andi $t8,$a1,0x8 -/* f02e39c: 0fc1272c */ jal func0f049cb0 +/* f02e39c: 0fc1272c */ jal chrGetDistanceToChr /* f02e3a0: 00c02825 */ or $a1,$a2,$zero /* f02e3a4: 1000000a */ beqz $zero,.L0f02e3d0 /* f02e3a8: 8fbf0014 */ lw $ra,0x14($sp) @@ -84369,44 +84369,21 @@ glabel positionGetIndexByChrId /* f049cac: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f049cb0 -/* f049cb0: 27bdffe0 */ addiu $sp,$sp,-32 -/* f049cb4: afbf0014 */ sw $ra,0x14($sp) -/* f049cb8: 8c83001c */ lw $v1,0x1c($a0) -/* f049cbc: 0fc126d1 */ jal chrFindById -/* f049cc0: afa3001c */ sw $v1,0x1c($sp) -/* f049cc4: 44801000 */ mtc1 $zero,$f2 -/* f049cc8: 10400015 */ beqz $v0,.L0f049d20 -/* f049ccc: 8fa3001c */ lw $v1,0x1c($sp) -/* f049cd0: 8c4e001c */ lw $t6,0x1c($v0) -/* f049cd4: 51c00013 */ beqzl $t6,.L0f049d24 -/* f049cd8: 8fbf0014 */ lw $ra,0x14($sp) -/* f049cdc: 8c42001c */ lw $v0,0x1c($v0) -/* f049ce0: c4660008 */ lwc1 $f6,0x8($v1) -/* f049ce4: c46a000c */ lwc1 $f10,0xc($v1) -/* f049ce8: c4440008 */ lwc1 $f4,0x8($v0) -/* f049cec: c448000c */ lwc1 $f8,0xc($v0) -/* f049cf0: c4720010 */ lwc1 $f18,0x10($v1) -/* f049cf4: 46062001 */ sub.s $f0,$f4,$f6 -/* f049cf8: c4500010 */ lwc1 $f16,0x10($v0) -/* f049cfc: 460a4081 */ sub.s $f2,$f8,$f10 -/* f049d00: 46000102 */ mul.s $f4,$f0,$f0 -/* f049d04: 46128381 */ sub.s $f14,$f16,$f18 -/* f049d08: 46021182 */ mul.s $f6,$f2,$f2 -/* f049d0c: 46062200 */ add.s $f8,$f4,$f6 -/* f049d10: 460e7282 */ mul.s $f10,$f14,$f14 -/* f049d14: 0c012974 */ jal sqrtf -/* f049d18: 460a4300 */ add.s $f12,$f8,$f10 -/* f049d1c: 46000086 */ mov.s $f2,$f0 -.L0f049d20: -/* f049d20: 8fbf0014 */ lw $ra,0x14($sp) -.L0f049d24: -/* f049d24: 27bd0020 */ addiu $sp,$sp,0x20 -/* f049d28: 46001006 */ mov.s $f0,$f2 -/* f049d2c: 03e00008 */ jr $ra -/* f049d30: 00000000 */ sll $zero,$zero,0x0 -); +float chrGetDistanceToChr(struct chrdata *chr1, s32 chr2num) +{ + struct position *pos1 = chr1->pos; + struct chrdata *chr2 = chrFindById(chr1, chr2num); + float distance = 0.00000000; + + if (chr2 && chr2->pos) { + float xdiff = chr2->pos->coord.x - pos1->coord.x; + float ydiff = chr2->pos->coord.y - pos1->coord.y; + float zdiff = chr2->pos->coord.z - pos1->coord.z; + distance = sqrtf(xdiff * xdiff + ydiff * ydiff + zdiff * zdiff); + } + + return distance; +} GLOBAL_ASM( glabel func0f049d34