diff --git a/src/game/game_0601b0.c b/src/game/game_0601b0.c index 8df941c1c..d62230d26 100644 --- a/src/game/game_0601b0.c +++ b/src/game/game_0601b0.c @@ -4958,7 +4958,7 @@ glabel var7f1a9f54 /* f0645d0: c7a00058 */ lwc1 $f0,0x58($sp) /* f0645d4: 0fc282fb */ jal func0f0a0bec /* f0645d8: afa0004c */ sw $zero,0x4c($sp) -/* f0645dc: 0fc25e24 */ jal func0f097890 +/* f0645dc: 0fc25e24 */ jal floorf /* f0645e0: c7ac008c */ lwc1 $f12,0x8c($sp) /* f0645e4: e7a0008c */ swc1 $f0,0x8c($sp) /* f0645e8: 0fc25e5c */ jal ceilf diff --git a/src/game/game_097890.c b/src/game/game_097890.c index 8db04ba50..6e60a8a4a 100644 --- a/src/game/game_097890.c +++ b/src/game/game_097890.c @@ -10,41 +10,22 @@ #include "gvars/gvars.h" #include "types.h" -GLOBAL_ASM( -glabel func0f097890 -/* f097890: 44802000 */ mtc1 $zero,$f4 -/* f097894: 00000000 */ sll $zero,$zero,0x0 -/* f097898: 460c203e */ c.le.s $f4,$f12 -/* f09789c: 00000000 */ sll $zero,$zero,0x0 -/* f0978a0: 45020008 */ bc1fl .L0f0978c4 -/* f0978a4: 4600628d */ trunc.w.s $f10,$f12 -/* f0978a8: 4600618d */ trunc.w.s $f6,$f12 -/* f0978ac: 440f3000 */ mfc1 $t7,$f6 -/* f0978b0: 00000000 */ sll $zero,$zero,0x0 -/* f0978b4: 448f4000 */ mtc1 $t7,$f8 -/* f0978b8: 03e00008 */ jr $ra -/* f0978bc: 46804020 */ cvt.s.w $f0,$f8 -/* f0978c0: 4600628d */ trunc.w.s $f10,$f12 -.L0f0978c4: -/* f0978c4: 3c013f80 */ lui $at,0x3f80 -/* f0978c8: 44195000 */ mfc1 $t9,$f10 -/* f0978cc: 00000000 */ sll $zero,$zero,0x0 -/* f0978d0: 44998000 */ mtc1 $t9,$f16 -/* f0978d4: 00000000 */ sll $zero,$zero,0x0 -/* f0978d8: 468080a0 */ cvt.s.w $f2,$f16 -/* f0978dc: 46026032 */ c.eq.s $f12,$f2 -/* f0978e0: 00000000 */ sll $zero,$zero,0x0 -/* f0978e4: 45020004 */ bc1fl .L0f0978f8 -/* f0978e8: 44819000 */ mtc1 $at,$f18 -/* f0978ec: 03e00008 */ jr $ra -/* f0978f0: 46001006 */ mov.s $f0,$f2 -/* f0978f4: 44819000 */ mtc1 $at,$f18 -.L0f0978f8: -/* f0978f8: 00000000 */ sll $zero,$zero,0x0 -/* f0978fc: 46121001 */ sub.s $f0,$f2,$f18 -/* f097900: 03e00008 */ jr $ra -/* f097904: 00000000 */ sll $zero,$zero,0x0 -); +f32 floorf(f32 value) +{ + f32 fvalue; + + if (value >= 0) { + return (s32)value; + } + + fvalue = (s32)value; + + if (value == fvalue) { + return fvalue; + } + + return fvalue - 1; +} s32 floor(f32 value) { diff --git a/src/game/propobj.c b/src/game/propobj.c index a311b37b1..859d26485 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -28394,7 +28394,7 @@ glabel var7f1aa6ec /* f07eda8: 5140003e */ beqzl $t2,.L0f07eea4 /* f07edac: 2604001c */ addiu $a0,$s0,0x1c /* f07edb0: 8deb0020 */ lw $t3,0x20($t7) -/* f07edb4: 0fc25e24 */ jal func0f097890 +/* f07edb4: 0fc25e24 */ jal floorf /* f07edb8: c56c000c */ lwc1 $f12,0xc($t3) /* f07edbc: 4600048d */ trunc.w.s $f18,$f0 /* f07edc0: 3c07800a */ lui $a3,%hi(g_Vars) @@ -28408,7 +28408,7 @@ glabel var7f1aa6ec /* f07ede0: afb80094 */ sw $t8,0x94($sp) /* f07ede4: 8fad0254 */ lw $t5,0x254($sp) /* f07ede8: 8dac0020 */ lw $t4,0x20($t5) -/* f07edec: 0fc25e24 */ jal func0f097890 +/* f07edec: 0fc25e24 */ jal floorf /* f07edf0: c58c000c */ lwc1 $f12,0xc($t4) /* f07edf4: 4600018d */ trunc.w.s $f6,$f0 /* f07edf8: 8fa30094 */ lw $v1,0x94($sp) @@ -44069,7 +44069,7 @@ glabel func0f08cb20 /* f08cb74: 10000004 */ beqz $zero,.L0f08cb88 /* f08cb78: 0000a825 */ or $s5,$zero,$zero .L0f08cb7c: -/* f08cb7c: 0fc25e24 */ jal func0f097890 +/* f08cb7c: 0fc25e24 */ jal floorf /* f08cb80: c7ac008c */ lwc1 $f12,0x8c($sp) /* f08cb84: 0000a825 */ or $s5,$zero,$zero .L0f08cb88: @@ -48574,7 +48574,7 @@ glabel var7f1ab1a8 /* f090a64: c428b1a0 */ lwc1 $f8,%lo(var7f1ab1a0)($at) /* f090a68: e7a0004c */ swc1 $f0,0x4c($sp) /* f090a6c: 46080302 */ mul.s $f12,$f0,$f8 -/* f090a70: 0fc25e24 */ jal func0f097890 +/* f090a70: 0fc25e24 */ jal floorf /* f090a74: 00000000 */ sll $zero,$zero,0x0 /* f090a78: 4600028d */ trunc.w.s $f10,$f0 /* f090a7c: 3c017f1b */ lui $at,%hi(var7f1ab1a4) @@ -48582,7 +48582,7 @@ glabel var7f1ab1a8 /* f090a84: c7b0004c */ lwc1 $f16,0x4c($sp) /* f090a88: 440e5000 */ mfc1 $t6,$f10 /* f090a8c: 46128302 */ mul.s $f12,$f16,$f18 -/* f090a90: 0fc25e24 */ jal func0f097890 +/* f090a90: 0fc25e24 */ jal floorf /* f090a94: afae005c */ sw $t6,0x5c($sp) /* f090a98: 4600010d */ trunc.w.s $f4,$f0 /* f090a9c: 8fb9005c */ lw $t9,0x5c($sp) @@ -48595,7 +48595,7 @@ glabel var7f1ab1a8 /* f090ab8: 00094880 */ sll $t1,$t1,0x2 /* f090abc: 03095023 */ subu $t2,$t8,$t1 /* f090ac0: 46083302 */ mul.s $f12,$f6,$f8 -/* f090ac4: 0fc25e24 */ jal func0f097890 +/* f090ac4: 0fc25e24 */ jal floorf /* f090ac8: afaa0058 */ sw $t2,0x58($sp) /* f090acc: 8fad005c */ lw $t5,0x5c($sp) /* f090ad0: 4600028d */ trunc.w.s $f10,$f0 diff --git a/src/include/game/game_097890.h b/src/include/game/game_097890.h index 2e6f97e00..c0b22f3df 100644 --- a/src/include/game/game_097890.h +++ b/src/include/game/game_097890.h @@ -3,7 +3,7 @@ #include #include "types.h" -u32 func0f097890(void); +f32 floorf(f32 value); s32 floor(f32 value); #endif diff --git a/src/lib/lib_1a500.c b/src/lib/lib_1a500.c index 742ac7b72..19ea94d64 100644 --- a/src/lib/lib_1a500.c +++ b/src/lib/lib_1a500.c @@ -1281,7 +1281,7 @@ glabel func0001b0e8 /* 1b168: c5120010 */ lwc1 $f18,0x10($t0) /* 1b16c: afa80040 */ sw $t0,0x40($sp) /* 1b170: afa20044 */ sw $v0,0x44($sp) -/* 1b174: 0fc25e24 */ jal func0f097890 +/* 1b174: 0fc25e24 */ jal floorf /* 1b178: 46009303 */ div.s $f12,$f18,$f0 /* 1b17c: 8fa80040 */ lw $t0,0x40($sp) /* 1b180: 8fa30044 */ lw $v1,0x44($sp) @@ -1534,7 +1534,7 @@ glabel func0001b400 /* 1b508: 45020009 */ bc1fl .L0001b530 /* 1b50c: c6020010 */ lwc1 $f2,0x10($s0) /* 1b510: c60a0010 */ lwc1 $f10,0x10($s0) -/* 1b514: 0fc25e24 */ jal func0f097890 +/* 1b514: 0fc25e24 */ jal floorf /* 1b518: 46005303 */ div.s $f12,$f10,$f0 /* 1b51c: c610001c */ lwc1 $f16,0x1c($s0) /* 1b520: 46100082 */ mul.s $f2,$f0,$f16 @@ -2339,7 +2339,7 @@ glabel func0001bfa8 /* 1c088: 4502000a */ bc1fl .L0001c0b4 /* 1c08c: 44807000 */ mtc1 $zero,$f14 /* 1c090: c6040010 */ lwc1 $f4,0x10($s0) -/* 1c094: 0fc25e24 */ jal func0f097890 +/* 1c094: 0fc25e24 */ jal floorf /* 1c098: 46002303 */ div.s $f12,$f4,$f0 /* 1c09c: c606001c */ lwc1 $f6,0x1c($s0) /* 1c0a0: 44807000 */ mtc1 $zero,$f14