From aaea9d6946a82a37f2f6cd87d1498888af978609 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Mon, 13 Aug 2018 08:13:50 +0200 Subject: [PATCH] Add the accurate xfloat option to the CPU tab --- rpcs3/Json/tooltips.json | 1 + rpcs3/rpcs3qt/emu_settings.h | 2 ++ rpcs3/rpcs3qt/settings_dialog.cpp | 10 ++++++++++ rpcs3/rpcs3qt/settings_dialog.ui | 7 +++++++ 4 files changed, 20 insertions(+) diff --git a/rpcs3/Json/tooltips.json b/rpcs3/Json/tooltips.json index dc3d0c15e..cba848c99 100644 --- a/rpcs3/Json/tooltips.json +++ b/rpcs3/Json/tooltips.json @@ -25,6 +25,7 @@ "liblv2": "This closely emulates how games can load and unload system module files on a real PlayStation 3.\nSome games require this.\nThis is the preferred option." }, "checkboxes": { + "accurateXFloat": "Fixes bugs in various games at the cost of performance.\nThis setting is only applied when SPU LLVM is active.", "spuCache": "Should normally stay enabled.\nDisable this if the cache becomes too large.\nDisabling it does not remove the existing cache.", "enableThreadScheduler": "Allows RPCS3 to manually schedule physical cores to run specific tasks on, instead of letting the OS handle it.\nVery useful on Windows, especially for AMD Ryzen systems where it can give huge performance gains.", "lowerSPUThrPrio": "Runs SPU threads with lower priority than PPU threads.\nUsually faster on an i3 or i5, possibly slower or no difference on an i7 or Ryzen.", diff --git a/rpcs3/rpcs3qt/emu_settings.h b/rpcs3/rpcs3qt/emu_settings.h index 85919db8b..d641390b4 100644 --- a/rpcs3/rpcs3qt/emu_settings.h +++ b/rpcs3/rpcs3qt/emu_settings.h @@ -41,6 +41,7 @@ public: EnableTSX, AccurateGETLLAR, AccuratePUTLLUC, + AccurateXFloat, SetDAZandFTZ, SPUBlockSize, SPUCache, @@ -234,6 +235,7 @@ private: { EnableTSX, { "Core", "Enable TSX"}}, { AccurateGETLLAR, { "Core", "Accurate GETLLAR"}}, { AccuratePUTLLUC, { "Core", "Accurate PUTLLUC"}}, + { AccurateXFloat, { "Core", "Accurate xfloat"}}, { SetDAZandFTZ, { "Core", "Set DAZ and FTZ"}}, { SPUBlockSize, { "Core", "SPU Block Size"}}, { SPUCache, { "Core", "SPU Cache"}}, diff --git a/rpcs3/rpcs3qt/settings_dialog.cpp b/rpcs3/rpcs3qt/settings_dialog.cpp index fbcaa0e6a..4629cf8ba 100644 --- a/rpcs3/rpcs3qt/settings_dialog.cpp +++ b/rpcs3/rpcs3qt/settings_dialog.cpp @@ -180,6 +180,9 @@ settings_dialog::settings_dialog(std::shared_ptr guiSettings, std: xemu_settings->EnhanceCheckBox(ui->spuLoopDetection, emu_settings::SPULoopDetection); SubscribeTooltip(ui->spuLoopDetection, json_cpu_cbs["spuLoopDetection"].toString()); + xemu_settings->EnhanceCheckBox(ui->accurateXFloat, emu_settings::AccurateXFloat); + SubscribeTooltip(ui->accurateXFloat, json_cpu_cbs["accurateXFloat"].toString()); + // Comboboxes xemu_settings->EnhanceComboBox(ui->spuBlockSize, emu_settings::SPUBlockSize); @@ -282,6 +285,13 @@ settings_dialog::settings_dialog(std::shared_ptr guiSettings, std: } } + connect(ui->spu_llvm, &QAbstractButton::toggled, [this](bool checked) + { + ui->accurateXFloat->setEnabled(checked); + }); + + ui->accurateXFloat->setEnabled(ui->spu_llvm->isChecked()); + #ifndef LLVM_AVAILABLE ui->ppu_llvm->setEnabled(false); ui->spu_llvm->setEnabled(false); diff --git a/rpcs3/rpcs3qt/settings_dialog.ui b/rpcs3/rpcs3qt/settings_dialog.ui index da0ae533d..81e0b4425 100644 --- a/rpcs3/rpcs3qt/settings_dialog.ui +++ b/rpcs3/rpcs3qt/settings_dialog.ui @@ -237,6 +237,13 @@ + + + + Accurate xfloat + + +