From d447082482962f2e6d22010fb61e4b1a105bb9be Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 5 Apr 2020 12:41:20 +1000 Subject: [PATCH] Decompile floor --- src/game/game_000130.c | 2 +- src/game/game_097890.c | 47 ++++++++++++---------------------- src/include/game/game_097890.h | 2 +- src/lib/lib_1a500.c | 12 ++++----- 4 files changed, 24 insertions(+), 39 deletions(-) diff --git a/src/game/game_000130.c b/src/game/game_000130.c index 1b984ff76..907b1361f 100644 --- a/src/game/game_000130.c +++ b/src/game/game_000130.c @@ -248,7 +248,7 @@ glabel func0f00040c /* f00044c: c43678c4 */ lwc1 $f22,%lo(var7f1a78c4)($at) /* f000450: 34128000 */ dli $s2,0x8000 .L0f000454: -/* f000454: 0fc25e42 */ jal func0f097908 +/* f000454: 0fc25e42 */ jal floor /* f000458: c60c0004 */ lwc1 $f12,0x4($s0) /* f00045c: 86040000 */ lh $a0,0x0($s0) /* f000460: 00002825 */ or $a1,$zero,$zero diff --git a/src/game/game_097890.c b/src/game/game_097890.c index 8b3c39584..8db04ba50 100644 --- a/src/game/game_097890.c +++ b/src/game/game_097890.c @@ -46,34 +46,19 @@ glabel func0f097890 /* f097904: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f097908 -/* f097908: 44802000 */ mtc1 $zero,$f4 -/* f09790c: 00000000 */ sll $zero,$zero,0x0 -/* f097910: 460c203e */ c.le.s $f4,$f12 -/* f097914: 00000000 */ sll $zero,$zero,0x0 -/* f097918: 45020006 */ bc1fl .L0f097934 -/* f09791c: 4600620d */ trunc.w.s $f8,$f12 -/* f097920: 4600618d */ trunc.w.s $f6,$f12 -/* f097924: 44023000 */ mfc1 $v0,$f6 -/* f097928: 03e00008 */ jr $ra -/* f09792c: 00000000 */ sll $zero,$zero,0x0 -/* f097930: 4600620d */ trunc.w.s $f8,$f12 -.L0f097934: -/* f097934: 44034000 */ mfc1 $v1,$f8 -/* f097938: 00000000 */ sll $zero,$zero,0x0 -/* f09793c: 44835000 */ mtc1 $v1,$f10 -/* f097940: 2462ffff */ addiu $v0,$v1,-1 -/* f097944: 46805420 */ cvt.s.w $f16,$f10 -/* f097948: 46106032 */ c.eq.s $f12,$f16 -/* f09794c: 00000000 */ sll $zero,$zero,0x0 -/* f097950: 45000003 */ bc1f .L0f097960 -/* f097954: 00000000 */ sll $zero,$zero,0x0 -/* f097958: 03e00008 */ jr $ra -/* f09795c: 00601025 */ or $v0,$v1,$zero -.L0f097960: -/* f097960: 03e00008 */ jr $ra -/* f097964: 00000000 */ sll $zero,$zero,0x0 -/* f097968: 00000000 */ sll $zero,$zero,0x0 -/* f09796c: 00000000 */ sll $zero,$zero,0x0 -); +s32 floor(f32 value) +{ + s32 ivalue; + + if (value >= 0) { + return value; + } + + ivalue = value; + + if (value == ivalue) { + return ivalue; + } + + return ivalue - 1; +} diff --git a/src/include/game/game_097890.h b/src/include/game/game_097890.h index 395f3f377..2e6f97e00 100644 --- a/src/include/game/game_097890.h +++ b/src/include/game/game_097890.h @@ -4,6 +4,6 @@ #include "types.h" u32 func0f097890(void); -u32 func0f097908(void); +s32 floor(f32 value); #endif diff --git a/src/lib/lib_1a500.c b/src/lib/lib_1a500.c index 4f5c28d74..742ac7b72 100644 --- a/src/lib/lib_1a500.c +++ b/src/lib/lib_1a500.c @@ -4644,7 +4644,7 @@ glabel func0001e018 /* 1e028: 8c900020 */ lw $s0,0x20($a0) /* 1e02c: 52000043 */ beqzl $s0,.L0001e13c /* 1e030: 8fbf001c */ lw $ra,0x1c($sp) -/* 1e034: 0fc25e42 */ jal func0f097908 +/* 1e034: 0fc25e42 */ jal floor /* 1e038: c7ac0034 */ lwc1 $f12,0x34($sp) /* 1e03c: c604001c */ lwc1 $f4,0x1c($s0) /* 1e040: 44803000 */ mtc1 $zero,$f6 @@ -4738,7 +4738,7 @@ glabel func0001e14c /* 1e178: 860e0002 */ lh $t6,0x2($s0) /* 1e17c: 51c00043 */ beqzl $t6,.L0001e28c /* 1e180: 8fbf001c */ lw $ra,0x1c($sp) -/* 1e184: 0fc25e42 */ jal func0f097908 +/* 1e184: 0fc25e42 */ jal floor /* 1e188: c7ac0038 */ lwc1 $f12,0x38($sp) /* 1e18c: c6040040 */ lwc1 $f4,0x40($s0) /* 1e190: 44803000 */ mtc1 $zero,$f6 @@ -4925,10 +4925,10 @@ glabel func0001e2b4 /* 1e410: 5280000a */ beqzl $s4,.L0001e43c /* 1e414: 4600a306 */ mov.s $f12,$f20 /* 1e418: 4600a306 */ mov.s $f12,$f20 -/* 1e41c: 0fc25e42 */ jal func0f097908 +/* 1e41c: 0fc25e42 */ jal floor /* 1e420: e7a000bc */ swc1 $f0,0xbc($sp) /* 1e424: 24530001 */ addiu $s3,$v0,0x1 -/* 1e428: 0fc25e42 */ jal func0f097908 +/* 1e428: 0fc25e42 */ jal floor /* 1e42c: c7ac0138 */ lwc1 $f12,0x138($sp) /* 1e430: 10000009 */ beqz $zero,.L0001e458 /* 1e434: 00403825 */ or $a3,$v0,$zero @@ -5480,11 +5480,11 @@ glabel func0001e2b4 /* 1ec2c: 316a0002 */ andi $t2,$t3,0x2 /* 1ec30: 1540005b */ bnez $t2,.L0001eda0 /* 1ec34: 00000000 */ sll $zero,$zero,0x0 -/* 1ec38: 0fc25e42 */ jal func0f097908 +/* 1ec38: 0fc25e42 */ jal floor /* 1ec3c: c7ac013c */ lwc1 $f12,0x13c($sp) /* 1ec40: c7b40140 */ lwc1 $f20,0x140($sp) /* 1ec44: 00408025 */ or $s0,$v0,$zero -/* 1ec48: 0fc25e42 */ jal func0f097908 +/* 1ec48: 0fc25e42 */ jal floor /* 1ec4c: 4600a306 */ mov.s $f12,$f20 /* 1ec50: 12800004 */ beqz $s4,.L0001ec64 /* 1ec54: 00409825 */ or $s3,$v0,$zero