[core] Add option to control Host MMU Emulation (#324)

This adds an option to enable or disable Host MMU Emulation [Android/PC], brings better config per-game handling with Disable Buffer Reorder, disables Flush Debug Lines by Log, option which was enabled by default on Android/PC taxing performance and translates to all supported languages the recent changes.

Leaves room for NCE improvements in the foreseable future.

Co-authored-by: crueter <crueter@eden-emu.dev>
Co-authored-by: PavelBARABANOV <pavelbarabanov94@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/324
Reviewed-by: crueter <crueter@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: MaranBr <maranbr@outlook.com>
Co-committed-by: MaranBr <maranbr@outlook.com>
This commit is contained in:
MaranBr 2025-08-27 23:02:46 +02:00 committed by crueter
parent 9d53933a95
commit 7f482d0730
Signed by: crueter
GPG key ID: 425ACD2D4830EBC6
34 changed files with 108 additions and 12 deletions

View file

@ -90,15 +90,15 @@ void ConfigureCpu::Setup(const ConfigurationShared::Builder& builder) {
unsafe_layout->addWidget(widget);
}
UpdateGroup(accuracy_combobox->currentIndex());
UpdateGroup(backend_combobox->currentIndex());
UpdateGroup();
}
void ConfigureCpu::UpdateGroup(int index) {
const auto accuracy = static_cast<Settings::CpuAccuracy>(
combobox_translations.at(Settings::EnumMetadata<Settings::CpuAccuracy>::Index())[index]
.first);
ui->unsafe_group->setVisible(accuracy == Settings::CpuAccuracy::Unsafe);
void ConfigureCpu::UpdateGroup()
{
const u32 accuracy = accuracy_combobox->currentIndex();
const u32 backend = backend_combobox->currentIndex();
// TODO(crueter): see if this works on NCE
ui->unsafe_group->setVisible(accuracy == (u32) Settings::CpuAccuracy::Unsafe && backend == (u32) Settings::CpuBackend::Dynarmic);
}
void ConfigureCpu::ApplyConfiguration() {

View file

@ -39,7 +39,7 @@ private:
void changeEvent(QEvent* event) override;
void RetranslateUI();
void UpdateGroup(int index);
void UpdateGroup();
void Setup(const ConfigurationShared::Builder& builder);

View file

@ -118,6 +118,8 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent)
// Cpu Debug
// Cpu Unsafe
INSERT(Settings, cpuopt_unsafe_host_mmu, tr("Enable Host MMU Emulation (fastmem)"),
tr("This optimization speeds up memory accesses by the guest program.\nEnabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.\nDisabling this forces all memory accesses to use Software MMU Emulation."));
INSERT(
Settings,
cpuopt_unsafe_unfuse_fma,