From 27d52356cf35df839b3a41fc32cf3478372b19e3 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sun, 5 Apr 2020 12:37:15 +1000 Subject: [PATCH] Decompile ceil --- src/game/game_097970.c | 47 ++++++++++++---------------------- src/game/game_157db0.c | 4 +-- src/include/game/game_097970.h | 2 +- src/lib/lib_1a500.c | 6 ++--- 4 files changed, 22 insertions(+), 37 deletions(-) diff --git a/src/game/game_097970.c b/src/game/game_097970.c index c1ff64a29..62d42ff2b 100644 --- a/src/game/game_097970.c +++ b/src/game/game_097970.c @@ -46,34 +46,19 @@ glabel func0f097970 /* f0979e4: 00000000 */ sll $zero,$zero,0x0 ); -GLOBAL_ASM( -glabel func0f0979e8 -/* f0979e8: 44802000 */ mtc1 $zero,$f4 -/* f0979ec: 00000000 */ sll $zero,$zero,0x0 -/* f0979f0: 4604603e */ c.le.s $f12,$f4 -/* f0979f4: 00000000 */ sll $zero,$zero,0x0 -/* f0979f8: 45020006 */ bc1fl .L0f097a14 -/* f0979fc: 4600620d */ trunc.w.s $f8,$f12 -/* f097a00: 4600618d */ trunc.w.s $f6,$f12 -/* f097a04: 44023000 */ mfc1 $v0,$f6 -/* f097a08: 03e00008 */ jr $ra -/* f097a0c: 00000000 */ sll $zero,$zero,0x0 -/* f097a10: 4600620d */ trunc.w.s $f8,$f12 -.L0f097a14: -/* f097a14: 44034000 */ mfc1 $v1,$f8 -/* f097a18: 00000000 */ sll $zero,$zero,0x0 -/* f097a1c: 44835000 */ mtc1 $v1,$f10 -/* f097a20: 24620001 */ addiu $v0,$v1,0x1 -/* f097a24: 46805420 */ cvt.s.w $f16,$f10 -/* f097a28: 46106032 */ c.eq.s $f12,$f16 -/* f097a2c: 00000000 */ sll $zero,$zero,0x0 -/* f097a30: 45000003 */ bc1f .L0f097a40 -/* f097a34: 00000000 */ sll $zero,$zero,0x0 -/* f097a38: 03e00008 */ jr $ra -/* f097a3c: 00601025 */ or $v0,$v1,$zero -.L0f097a40: -/* f097a40: 03e00008 */ jr $ra -/* f097a44: 00000000 */ sll $zero,$zero,0x0 -/* f097a48: 00000000 */ sll $zero,$zero,0x0 -/* f097a4c: 00000000 */ sll $zero,$zero,0x0 -); +s32 ceil(f32 value) +{ + s32 ivalue; + + if (value <= 0) { + return value; + } + + ivalue = value; + + if (ivalue == value) { + return value; + } + + return ivalue + 1; +} diff --git a/src/game/game_157db0.c b/src/game/game_157db0.c index aa7f6affd..23d1362f2 100644 --- a/src/game/game_157db0.c +++ b/src/game/game_157db0.c @@ -5543,10 +5543,10 @@ glabel func0f15cbb4 /* f15cbbc: 44876000 */ mtc1 $a3,$f12 /* f15cbc0: afa40028 */ sw $a0,0x28($sp) /* f15cbc4: afa5002c */ sw $a1,0x2c($sp) -/* f15cbc8: 0fc25e7a */ jal func0f0979e8 +/* f15cbc8: 0fc25e7a */ jal ceil /* f15cbcc: afa60030 */ sw $a2,0x30($sp) /* f15cbd0: afa20020 */ sw $v0,0x20($sp) -/* f15cbd4: 0fc25e7a */ jal func0f0979e8 +/* f15cbd4: 0fc25e7a */ jal ceil /* f15cbd8: c7ac0038 */ lwc1 $f12,0x38($sp) /* f15cbdc: c7a4002c */ lwc1 $f4,0x2c($sp) /* f15cbe0: c7a80030 */ lwc1 $f8,0x30($sp) diff --git a/src/include/game/game_097970.h b/src/include/game/game_097970.h index 9f5ff89b1..725208e4f 100644 --- a/src/include/game/game_097970.h +++ b/src/include/game/game_097970.h @@ -4,6 +4,6 @@ #include "types.h" f32 func0f097970(f32 arg0); -u32 func0f0979e8(void); +s32 ceil(f32 value); #endif diff --git a/src/lib/lib_1a500.c b/src/lib/lib_1a500.c index 2867de6cb..4f5c28d74 100644 --- a/src/lib/lib_1a500.c +++ b/src/lib/lib_1a500.c @@ -3774,7 +3774,7 @@ glabel func0001d320 /* 1d41c: 0106082a */ slt $at,$t0,$a2 /* 1d420: 50200006 */ beqzl $at,.L0001d43c /* 1d424: a7a50026 */ sh $a1,0x26($sp) -/* 1d428: 0fc25e7a */ jal func0f0979e8 +/* 1d428: 0fc25e7a */ jal ceil /* 1d42c: 00000000 */ sll $zero,$zero,0x0 /* 1d430: 1000002d */ beqz $zero,.L0001d4e8 /* 1d434: 00403025 */ or $a2,$v0,$zero @@ -4934,10 +4934,10 @@ glabel func0001e2b4 /* 1e434: 00403825 */ or $a3,$v0,$zero /* 1e438: 4600a306 */ mov.s $f12,$f20 .L0001e43c: -/* 1e43c: 0fc25e7a */ jal func0f0979e8 +/* 1e43c: 0fc25e7a */ jal ceil /* 1e440: e7a000bc */ swc1 $f0,0xbc($sp) /* 1e444: 2453ffff */ addiu $s3,$v0,-1 -/* 1e448: 0fc25e7a */ jal func0f0979e8 +/* 1e448: 0fc25e7a */ jal ceil /* 1e44c: c7ac0138 */ lwc1 $f12,0x138($sp) /* 1e450: afa200ec */ sw $v0,0xec($sp) /* 1e454: 00403825 */ or $a3,$v0,$zero