diff --git a/rpcs3/Json/tooltips.json b/rpcs3/Json/tooltips.json index dc3d0c15ec..cba848c991 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 85919db8bd..d641390b44 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 fbcaa0e6a9..4629cf8ba7 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 da0ae533d2..81e0b4425d 100644 --- a/rpcs3/rpcs3qt/settings_dialog.ui +++ b/rpcs3/rpcs3qt/settings_dialog.ui @@ -237,6 +237,13 @@ + + + + Accurate xfloat + + +