diff --git a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp
index b29b7dad35..3b0ae602cd 100644
--- a/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp
+++ b/Source/Core/Core/Src/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp
@@ -42,6 +42,10 @@ using namespace MathUtil;
void UpdateSSEState();
+#ifdef _MSC_VER
+#pragma float_control(precise, on, push)
+#endif
+
// Extremely rare - actually, never seen.
// Star Wars : Rogue Leader spams that at some point :|
void Interpreter::Helper_UpdateCR1(double _fValue)
@@ -242,9 +246,7 @@ void Interpreter::fnegx(UGeckoInstruction _inst)
void Interpreter::fselx(UGeckoInstruction _inst)
{
- // D = (A >= 0) ? C : B
- rPS0(_inst.FD) = (rPS0(_inst.FA) < 0.0 || riPS0(_inst.FA) == PPC_NAN_U64) ?
- rPS0(_inst.FB) : rPS0(_inst.FC);
+ rPS0(_inst.FD) = (rPS0(_inst.FA) >= -0.0) ? rPS0(_inst.FC) : rPS0(_inst.FB);
// This is a binary instruction. Does not alter FPSCR
if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD));
}
@@ -517,3 +519,7 @@ void Interpreter::fsqrtx(UGeckoInstruction _inst)
UpdateFPRF(rPS0(_inst.FD));
if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD));
}
+
+#ifdef _MSC_VER
+#pragma float_control(pop)
+#endif
diff --git a/Source/Core/DolphinWX/Dolphin.vcxproj.user b/Source/Core/DolphinWX/Dolphin.vcxproj.user
index ac6cafaf98..ac67ec629b 100644
--- a/Source/Core/DolphinWX/Dolphin.vcxproj.user
+++ b/Source/Core/DolphinWX/Dolphin.vcxproj.user
@@ -3,6 +3,7 @@
$(TargetDir)
WindowsLocalDebugger
+ -d
$(TargetDir)
@@ -15,6 +16,7 @@
$(TargetDir)
WindowsLocalDebugger
+ -d
$(TargetDir)