From 7e4b06572ca4de8ca494b7c2de1a452b638373af Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 15 Mar 2020 09:30:39 +1000 Subject: [PATCH] Decompile currentPlayerRecordDistanceMoved --- src/game/game_167ae0.c | 62 +++++++++-------------------- src/include/game/data/data_01a3a0.h | 2 + src/include/game/game_0b63b0.h | 2 +- src/include/game/game_167ae0.h | 2 +- src/lib/lib_0d520.c | 2 +- 5 files changed, 23 insertions(+), 47 deletions(-) diff --git a/src/game/game_167ae0.c b/src/game/game_167ae0.c index 8adb5f322..617cae3f1 100644 --- a/src/game/game_167ae0.c +++ b/src/game/game_167ae0.c @@ -5968,50 +5968,24 @@ glabel func0f16b96c // } //} -GLOBAL_ASM( -glabel func0f16cb04 -/* f16cb04: 3c0e8007 */ lui $t6,%hi(var80075d64) -/* f16cb08: 8dce5d64 */ lw $t6,%lo(var80075d64)($t6) -/* f16cb0c: 27bdffe8 */ addiu $sp,$sp,-24 -/* f16cb10: 24020002 */ addiu $v0,$zero,0x2 -/* f16cb14: 144e000b */ bne $v0,$t6,.L0f16cb44 -/* f16cb18: afbf0014 */ sw $ra,0x14($sp) -/* f16cb1c: 3c0f8007 */ lui $t7,%hi(var80075d68) -/* f16cb20: 8def5d68 */ lw $t7,%lo(var80075d68)($t7) -/* f16cb24: 144f0005 */ bne $v0,$t7,.L0f16cb3c -/* f16cb28: 00000000 */ sll $zero,$zero,0x0 -/* f16cb2c: 0fc2f641 */ jal func0f0bd904 -/* f16cb30: 24040001 */ addiu $a0,$zero,0x1 -/* f16cb34: 10000003 */ beqz $zero,.L0f16cb44 -/* f16cb38: 00000000 */ sll $zero,$zero,0x0 -.L0f16cb3c: -/* f16cb3c: 0fc2f641 */ jal func0f0bd904 -/* f16cb40: 00002025 */ or $a0,$zero,$zero -.L0f16cb44: -/* f16cb44: 3c02800a */ lui $v0,%hi(g_Vars+0x284) -/* f16cb48: 8c42a244 */ lw $v0,%lo(g_Vars+0x284)($v0) -/* f16cb4c: 8c4300bc */ lw $v1,0xbc($v0) -/* f16cb50: c4460310 */ lwc1 $f6,0x310($v0) -/* f16cb54: c44a0318 */ lwc1 $f10,0x318($v0) -/* f16cb58: c4640008 */ lwc1 $f4,0x8($v1) -/* f16cb5c: c4680010 */ lwc1 $f8,0x10($v1) -/* f16cb60: 46062001 */ sub.s $f0,$f4,$f6 -/* f16cb64: 460a4081 */ sub.s $f2,$f8,$f10 -/* f16cb68: 46000402 */ mul.s $f16,$f0,$f0 -/* f16cb6c: 00000000 */ sll $zero,$zero,0x0 -/* f16cb70: 46021482 */ mul.s $f18,$f2,$f2 -/* f16cb74: 0c012974 */ jal sqrtf -/* f16cb78: 46128300 */ add.s $f12,$f16,$f18 -/* f16cb7c: 3c02800a */ lui $v0,%hi(g_Vars+0x288) -/* f16cb80: 8c42a248 */ lw $v0,%lo(g_Vars+0x288)($v0) -/* f16cb84: c4440038 */ lwc1 $f4,0x38($v0) -/* f16cb88: 46002180 */ add.s $f6,$f4,$f0 -/* f16cb8c: e4460038 */ swc1 $f6,0x38($v0) -/* f16cb90: 8fbf0014 */ lw $ra,0x14($sp) -/* f16cb94: 27bd0018 */ addiu $sp,$sp,0x18 -/* f16cb98: 03e00008 */ jr $ra -/* f16cb9c: 00000000 */ sll $zero,$zero,0x0 -); +void currentPlayerRecordDistanceMoved(void) +{ + f32 xdiff; + f32 zdiff; + + if (var80075d64 == 2) { + if (var80075d68 == 2) { + func0f0bd904(true); + } else { + func0f0bd904(false); + } + } + + xdiff = g_Vars.currentplayer->prop->pos.x - g_Vars.currentplayer->bondprevpos.x; + zdiff = g_Vars.currentplayer->prop->pos.z - g_Vars.currentplayer->bondprevpos.z; + + g_Vars.currentplayerstats->distance += sqrtf(xdiff * xdiff + zdiff * zdiff); +} void stageLoad(void) { diff --git a/src/include/game/data/data_01a3a0.h b/src/include/game/data/data_01a3a0.h index 7ee48e935..3ccf71a53 100644 --- a/src/include/game/data/data_01a3a0.h +++ b/src/include/game/data/data_01a3a0.h @@ -69,5 +69,7 @@ extern u32 var80075d18; extern u32 var80075d2c; extern u32 var80075d40; extern u32 var80075d54; +extern u32 var80075d64; +extern u32 var80075d68; #endif diff --git a/src/include/game/game_0b63b0.h b/src/include/game/game_0b63b0.h index 15fbb4597..8c85a7bbe 100644 --- a/src/include/game/game_0b63b0.h +++ b/src/include/game/game_0b63b0.h @@ -59,7 +59,7 @@ u32 func0f0bd358(void); u32 func0f0bd3c4(void); u32 func0f0bd4e4(void); u32 func0f0bd764(void); -u32 func0f0bd904(void); +void func0f0bd904(bool arg0); u32 func0f0bfc7c(void); u32 func0f0bffcc(void); u32 func0f0c00cc(void); diff --git a/src/include/game/game_167ae0.h b/src/include/game/game_167ae0.h index 55dc24118..54c2715d8 100644 --- a/src/include/game/game_167ae0.h +++ b/src/include/game/game_167ae0.h @@ -22,7 +22,7 @@ s32 sub54321(s32 value); void updateCutsceneTime(void); s32 getEffectiveSlowMotion(void); void func0f16b96c(void); -u32 func0f16cb04(void); +void currentPlayerRecordDistanceMoved(void); void func0f16cce4(void); void setVar80084014(bool arg0); void fadeConfigure(u32 color, s16 num_frames); diff --git a/src/lib/lib_0d520.c b/src/lib/lib_0d520.c index 6d40d33d0..1965eef26 100644 --- a/src/lib/lib_0d520.c +++ b/src/lib/lib_0d520.c @@ -1301,7 +1301,7 @@ glabel func0000e324 /* e524: 0c002f76 */ jal func0000bdd8 /* e528: 86070632 */ lh $a3,0x632($s0) .L0000e52c: -/* e52c: 0fc5b2c1 */ jal func0f16cb04 +/* e52c: 0fc5b2c1 */ jal currentPlayerRecordDistanceMoved /* e530: 00000000 */ sll $zero,$zero,0x0 /* e534: 8e2f006c */ lw $t7,0x6c($s1) /* e538: 26520001 */ addiu $s2,$s2,0x1