From fee20573d2155f0a5b8f7b8d9d2cc88e8f6b9da4 Mon Sep 17 00:00:00 2001 From: Andrew Church Date: Sun, 18 Jan 2015 07:04:22 +0900 Subject: [PATCH] Fix fcti rounding. --- rpcs3/Emu/Cell/PPUInterpreter.h | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/rpcs3/Emu/Cell/PPUInterpreter.h b/rpcs3/Emu/Cell/PPUInterpreter.h index 5a25ad5346..3a9c1b3824 100644 --- a/rpcs3/Emu/Cell/PPUInterpreter.h +++ b/rpcs3/Emu/Cell/PPUInterpreter.h @@ -3746,22 +3746,16 @@ private: switch(rn) { case FPSCR_RN_NEAR: - { - double t = b + 0.5; - i = (s32)t; - if (t - i < 0 || (t - i == 0 && b > 0)) i--; - break; - } + i = (s32)nearbyint(b); + break; case FPSCR_RN_ZERO: i = (s32)b; break; case FPSCR_RN_PINF: - i = (s32)b; - if (b - i > 0) i++; + i = (s32)ceil(b); break; case FPSCR_RN_MINF: - i = (s32)b; - if (b - i < 0) i--; + i = (s32)floor(b); break; } r = (u32)i; @@ -3977,22 +3971,16 @@ private: switch(rn) { case FPSCR_RN_NEAR: - { - double t = b + 0.5; - i = (s64)t; - if (t - i < 0 || (t - i == 0 && b > 0)) i--; - break; - } + i = (s64)nearbyint(b); + break; case FPSCR_RN_ZERO: i = (s64)b; break; case FPSCR_RN_PINF: - i = (s64)b; - if (b - i > 0) i++; + i = (s64)ceil(b); break; case FPSCR_RN_MINF: - i = (s64)b; - if (b - i < 0) i--; + i = (s64)floor(b); break; } r = (u64)i;