From 3feb0f135dc609be4a111f26f2dc2cdd8b4170f4 Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 5 Dec 2025 14:18:17 +0100 Subject: [PATCH] Add toolbar button and Action menu item to toggle forcing the recompiler to interpret blocks, should help with some slowdowns (tested to help with Daggerfall on both recompilers and Legend of Hero III on new recompiler). --- src/cpu/386_dynarec.c | 3 ++- src/cpu/cpu.h | 2 ++ src/cpu/x86.c | 2 ++ src/include/86box/ui.h | 2 ++ src/qt/languages/86box.pot | 12 ++++++++++++ src/qt/languages/cs-CZ.po | 12 ++++++++++++ src/qt/languages/de-DE.po | 12 ++++++++++++ src/qt/languages/es-ES.po | 12 ++++++++++++ src/qt/languages/fi-FI.po | 12 ++++++++++++ src/qt/languages/fr-FR.po | 12 ++++++++++++ src/qt/languages/hr-HR.po | 12 ++++++++++++ src/qt/languages/it-IT.po | 12 ++++++++++++ src/qt/languages/ja-JP.po | 12 ++++++++++++ src/qt/languages/ko-KR.po | 12 ++++++++++++ src/qt/languages/nb-NO.po | 12 ++++++++++++ src/qt/languages/nl-NL.po | 12 ++++++++++++ src/qt/languages/pl-PL.po | 12 ++++++++++++ src/qt/languages/pt-BR.po | 12 ++++++++++++ src/qt/languages/pt-PT.po | 12 ++++++++++++ src/qt/languages/ru-RU.po | 12 ++++++++++++ src/qt/languages/sk-SK.po | 12 ++++++++++++ src/qt/languages/sl-SI.po | 12 ++++++++++++ src/qt/languages/sv-SE.po | 12 ++++++++++++ src/qt/languages/tr-TR.po | 12 ++++++++++++ src/qt/languages/uk-UA.po | 12 ++++++++++++ src/qt/languages/vi-VN.po | 12 ++++++++++++ src/qt/qt_mainwindow.cpp | 37 +++++++++++++++++++++++++++++++++++++ src/qt/qt_mainwindow.hpp | 2 ++ src/qt/qt_mainwindow.ui | 12 ++++++++++++ src/qt_resources.qrc | 2 ++ src/unix/unix.c | 6 ++++++ 31 files changed, 331 insertions(+), 1 deletion(-) diff --git a/src/cpu/386_dynarec.c b/src/cpu/386_dynarec.c index ff729e4cf..852c25427 100644 --- a/src/cpu/386_dynarec.c +++ b/src/cpu/386_dynarec.c @@ -51,6 +51,7 @@ #define CPU_BLOCK_END() cpu_block_end = 1 +int cpu_force_interpreter = 0; int cpu_override_dynarec = 0; int inrecomp = 0; int cpu_block_end = 0; @@ -778,7 +779,7 @@ exec386_dynarec(int32_t cycs) cycles_old = cycles; oldtsc = tsc; tsc_old = tsc; - if ((!CACHE_ON()) || cpu_override_dynarec) /*Interpret block*/ + if (cpu_force_interpreter || cpu_override_dynarec || (!CACHE_ON())) /*Interpret block*/ { exec386_dynarec_int(); } else { diff --git a/src/cpu/cpu.h b/src/cpu/cpu.h index 9f6ce23cc..25564082b 100644 --- a/src/cpu/cpu.h +++ b/src/cpu/cpu.h @@ -823,6 +823,8 @@ extern MMX_REG *MMP[8]; extern uint16_t *MMEP[8]; extern int cpu_block_end; + +extern int cpu_force_interpreter; extern int cpu_override_dynarec; extern void mmx_init(void); diff --git a/src/cpu/x86.c b/src/cpu/x86.c index 1090f22a1..38e50a488 100644 --- a/src/cpu/x86.c +++ b/src/cpu/x86.c @@ -373,6 +373,8 @@ reset_common(int hard) in_lock = 0; cpu_cpurst_on_sr = 0; + + cpu_force_interpreter = 0; } /* Hard reset. */ diff --git a/src/include/86box/ui.h b/src/include/86box/ui.h index 9bfae4330..08719cc2b 100644 --- a/src/include/86box/ui.h +++ b/src/include/86box/ui.h @@ -71,6 +71,8 @@ extern void ui_sb_set_text(char *str); extern void ui_sb_bugui(char *str); extern void ui_sb_mt32lcd(char *str); +extern void ui_update_force_interpreter(void); + #ifdef __cplusplus } #endif diff --git a/src/qt/languages/86box.pot b/src/qt/languages/86box.pot index 8bedf31f8..f2689b6e1 100644 --- a/src/qt/languages/86box.pot +++ b/src/qt/languages/86box.pot @@ -3038,3 +3038,15 @@ msgstr "" msgid "Search:" msgstr "" + +msgid "Force interpretation" +msgstr "" + +msgid "Allow recompilation" +msgstr "" + +msgid "&Force interpretation" +msgstr "" + +msgid "&Allow recompilation" +msgstr "" diff --git a/src/qt/languages/cs-CZ.po b/src/qt/languages/cs-CZ.po index 0a1ff9f52..4b5c16481 100644 --- a/src/qt/languages/cs-CZ.po +++ b/src/qt/languages/cs-CZ.po @@ -3044,3 +3044,15 @@ msgstr "Tmavé" msgid "Search:" msgstr "Hledat:" + +msgid "Force interpretation" +msgstr "Vynutit interpretaci" + +msgid "Allow recompilation" +msgstr "Povolit rekompilaci" + +msgid "&Force interpretation" +msgstr "&Vynutit interpretaci" + +msgid "&Allow recompilation" +msgstr "&Povolit rekompilaci" diff --git a/src/qt/languages/de-DE.po b/src/qt/languages/de-DE.po index 3e23d8682..69b778eda 100644 --- a/src/qt/languages/de-DE.po +++ b/src/qt/languages/de-DE.po @@ -3044,3 +3044,15 @@ msgstr "Dunkel" msgid "Search:" msgstr "Suche:" + +msgid "Force interpretation" +msgstr "Erzwingen der Interpretation" + +msgid "Allow recompilation" +msgstr "Recompilierung zulassen" + +msgid "&Force interpretation" +msgstr "&Erzwingen der Interpretation" + +msgid "&Allow recompilation" +msgstr "Recompilierung &zulassen" diff --git a/src/qt/languages/es-ES.po b/src/qt/languages/es-ES.po index a365d62aa..b99343d59 100644 --- a/src/qt/languages/es-ES.po +++ b/src/qt/languages/es-ES.po @@ -3044,3 +3044,15 @@ msgstr "Oscuro" msgid "Search:" msgstr "Buscar:" + +msgid "Force interpretation" +msgstr "Forzar interpretación" + +msgid "Allow recompilation" +msgstr "Permitir recompilación" + +msgid "&Force interpretation" +msgstr "&Forzar interpretación" + +msgid "&Allow recompilation" +msgstr "&Permitir recompilación" diff --git a/src/qt/languages/fi-FI.po b/src/qt/languages/fi-FI.po index ce6d6bab4..0409680ec 100644 --- a/src/qt/languages/fi-FI.po +++ b/src/qt/languages/fi-FI.po @@ -3038,3 +3038,15 @@ msgstr "Tumma" msgid "Search:" msgstr "Hae:" + +msgid "Force interpretation" +msgstr "Pakota tulkinta" + +msgid "Allow recompilation" +msgstr "Salli uudelleenkompilointi" + +msgid "&Force interpretation" +msgstr "&Pakota tulkinta" + +msgid "&Allow recompilation" +msgstr "&Salli uudelleenkompilointi" diff --git a/src/qt/languages/fr-FR.po b/src/qt/languages/fr-FR.po index 026b53fa3..6c9175ec9 100644 --- a/src/qt/languages/fr-FR.po +++ b/src/qt/languages/fr-FR.po @@ -3044,3 +3044,15 @@ msgstr "Sombre" msgid "Search:" msgstr "Rechercher :" + +msgid "Force interpretation" +msgstr "Forcer l'interprétation" + +msgid "Allow recompilation" +msgstr "Permettre la recompilation" + +msgid "&Force interpretation" +msgstr "&Forcer l'interprétation" + +msgid "&Allow recompilation" +msgstr "&Permettre la recompilation" diff --git a/src/qt/languages/hr-HR.po b/src/qt/languages/hr-HR.po index ee6c238b9..3f14ed6e8 100644 --- a/src/qt/languages/hr-HR.po +++ b/src/qt/languages/hr-HR.po @@ -3046,3 +3046,15 @@ msgstr "Tamno" msgid "Search:" msgstr "Pretrag:" + +msgid "Force interpretation" +msgstr "Prisilna interpretacija" + +msgid "Allow recompilation" +msgstr "Omogući rekompilaciju" + +msgid "&Force interpretation" +msgstr "&Prisilna interpretacija" + +msgid "&Allow recompilation" +msgstr "&Omogući rekompilaciju" diff --git a/src/qt/languages/it-IT.po b/src/qt/languages/it-IT.po index 533377b46..2e9e34d61 100644 --- a/src/qt/languages/it-IT.po +++ b/src/qt/languages/it-IT.po @@ -3044,3 +3044,15 @@ msgstr "Scura" msgid "Search:" msgstr "Cerca:" + +msgid "Force interpretation" +msgstr "Forza interpretazione" + +msgid "Allow recompilation" +msgstr "Permetti ricompilazione" + +msgid "&Force interpretation" +msgstr "&Forza interpretazione" + +msgid "&Allow recompilation" +msgstr "&Permetti ricompilazione" diff --git a/src/qt/languages/ja-JP.po b/src/qt/languages/ja-JP.po index 8d117f349..ef3edd21d 100644 --- a/src/qt/languages/ja-JP.po +++ b/src/qt/languages/ja-JP.po @@ -3045,3 +3045,15 @@ msgstr "暗闇" msgid "Search:" msgstr "検索:" + +msgid "Force interpretation" +msgstr "解釈を強制する" + +msgid "Allow recompilation" +msgstr "再コンパイルを許可する" + +msgid "&Force interpretation" +msgstr "解釈を強制する(&F)" + +msgid "&Allow recompilation" +msgstr "再コンパイルを許可する(&A)" diff --git a/src/qt/languages/ko-KR.po b/src/qt/languages/ko-KR.po index 4994e8e66..ab0686842 100644 --- a/src/qt/languages/ko-KR.po +++ b/src/qt/languages/ko-KR.po @@ -3038,3 +3038,15 @@ msgstr "어둠" msgid "Search:" msgstr "검색:" + +msgid "Force interpretation" +msgstr "강제 해석" + +msgid "Allow recompilation" +msgstr "재컴파일 허용" + +msgid "&Force interpretation" +msgstr "강제 해석(&F)" + +msgid "&Allow recompilation" +msgstr "재컴파일 허용(&A)" diff --git a/src/qt/languages/nb-NO.po b/src/qt/languages/nb-NO.po index 395a56dc9..04f605d28 100644 --- a/src/qt/languages/nb-NO.po +++ b/src/qt/languages/nb-NO.po @@ -3038,3 +3038,15 @@ msgstr "Mørk" msgid "Search:" msgstr "Søk:" + +msgid "Force interpretation" +msgstr "Tving tolkning" + +msgid "Allow recompilation" +msgstr "Tillat rekompilering" + +msgid "&Force interpretation" +msgstr "&Tving tolkning" + +msgid "&Allow recompilation" +msgstr "&Tillat rekompilering" diff --git a/src/qt/languages/nl-NL.po b/src/qt/languages/nl-NL.po index b62014ee7..1c5369768 100644 --- a/src/qt/languages/nl-NL.po +++ b/src/qt/languages/nl-NL.po @@ -3038,3 +3038,15 @@ msgstr "Donker" msgid "Search:" msgstr "Zoeken:" + +msgid "Force interpretation" +msgstr "Interpretatie afdwingen" + +msgid "Allow recompilation" +msgstr "Recompilatie toestaan" + +msgid "&Force interpretation" +msgstr "Interpretatie &afdwingen" + +msgid "&Allow recompilation" +msgstr "Recompilatie &toestaan" diff --git a/src/qt/languages/pl-PL.po b/src/qt/languages/pl-PL.po index ae47844c2..f861392ae 100644 --- a/src/qt/languages/pl-PL.po +++ b/src/qt/languages/pl-PL.po @@ -3045,3 +3045,15 @@ msgstr "Ciemny" msgid "Search:" msgstr "Szukanie:" + +msgid "Force interpretation" +msgstr "Wymuś interpretację" + +msgid "Allow recompilation" +msgstr "Zezwól na rekompilację" + +msgid "&Force interpretation" +msgstr "&Wymuś interpretację" + +msgid "&Allow recompilation" +msgstr "&Zezwól na rekompilację" diff --git a/src/qt/languages/pt-BR.po b/src/qt/languages/pt-BR.po index d8fddc787..c263bc02b 100644 --- a/src/qt/languages/pt-BR.po +++ b/src/qt/languages/pt-BR.po @@ -3038,3 +3038,15 @@ msgstr "Escuro" msgid "Search:" msgstr "Pesquisar:" + +msgid "Force interpretation" +msgstr "Forçar interpretação" + +msgid "Allow recompilation" +msgstr "Permitir recompilação" + +msgid "&Force interpretation" +msgstr "&Forçar interpretação" + +msgid "&Allow recompilation" +msgstr "&Permitir recompilação" diff --git a/src/qt/languages/pt-PT.po b/src/qt/languages/pt-PT.po index 177ef25f6..de0623bec 100644 --- a/src/qt/languages/pt-PT.po +++ b/src/qt/languages/pt-PT.po @@ -3045,3 +3045,15 @@ msgstr "Escuro" msgid "Search:" msgstr "Procurar:" + +msgid "Force interpretation" +msgstr "Forçar interpretação" + +msgid "Allow recompilation" +msgstr "Permitir recompilação" + +msgid "&Force interpretation" +msgstr "&Forçar interpretação" + +msgid "&Allow recompilation" +msgstr "&Permitir recompilação" diff --git a/src/qt/languages/ru-RU.po b/src/qt/languages/ru-RU.po index 0b20956e7..ceaa7b4b8 100644 --- a/src/qt/languages/ru-RU.po +++ b/src/qt/languages/ru-RU.po @@ -3038,3 +3038,15 @@ msgstr "Тёмная" msgid "Search:" msgstr "Поиск:" + +msgid "Force interpretation" +msgstr "Принудительная интерпретация" + +msgid "Allow recompilation" +msgstr "Разрешить рекомпиляцию" + +msgid "&Force interpretation" +msgstr "&Принудительная интерпретация" + +msgid "&Allow recompilation" +msgstr "&Разрешить рекомпиляцию" diff --git a/src/qt/languages/sk-SK.po b/src/qt/languages/sk-SK.po index 5f84e59fe..8e41931ee 100644 --- a/src/qt/languages/sk-SK.po +++ b/src/qt/languages/sk-SK.po @@ -3044,3 +3044,15 @@ msgstr "Tmavá" msgid "Search:" msgstr "Hľadať:" + +msgid "Force interpretation" +msgstr "Vynútiť interpretáciu" + +msgid "Allow recompilation" +msgstr "Povoliť rekompiláciu" + +msgid "&Force interpretation" +msgstr "&Vynútiť interpretáciu" + +msgid "&Allow recompilation" +msgstr "&Povoliť rekompiláciu" diff --git a/src/qt/languages/sl-SI.po b/src/qt/languages/sl-SI.po index b654c9889..ca7a3e17b 100644 --- a/src/qt/languages/sl-SI.po +++ b/src/qt/languages/sl-SI.po @@ -3046,3 +3046,15 @@ msgstr "Temno" msgid "Search:" msgstr "Išči:" + +msgid "Force interpretation" +msgstr "Vsili interpretacijo" + +msgid "Allow recompilation" +msgstr "Dovoli prevajanje" + +msgid "&Force interpretation" +msgstr "&Vsili interpretacijo" + +msgid "&Allow recompilation" +msgstr "&Dovoli prevajanje" diff --git a/src/qt/languages/sv-SE.po b/src/qt/languages/sv-SE.po index ff0774bed..a153443f2 100644 --- a/src/qt/languages/sv-SE.po +++ b/src/qt/languages/sv-SE.po @@ -3038,3 +3038,15 @@ msgstr "Mörk" msgid "Search:" msgstr "Sök:" + +msgid "Force interpretation" +msgstr "Tvinga tolkning" + +msgid "Allow recompilation" +msgstr "Tillåt omkompilering" + +msgid "&Force interpretation" +msgstr "&Tvinga tolkning" + +msgid "&Allow recompilation" +msgstr "&Tillåt omkompilering" diff --git a/src/qt/languages/tr-TR.po b/src/qt/languages/tr-TR.po index 02bf881a5..ac4f83acf 100644 --- a/src/qt/languages/tr-TR.po +++ b/src/qt/languages/tr-TR.po @@ -3038,3 +3038,15 @@ msgstr "Karanlık" msgid "Search:" msgstr "Ara:" + +msgid "Force interpretation" +msgstr "Yorumlanmasını zorla" + +msgid "Allow recompilation" +msgstr "Derlenmesine izin ver" + +msgid "&Force interpretation" +msgstr "&Yorumlanmasını zorla" + +msgid "&Allow recompilation" +msgstr "&Derlenmesine izin ver" diff --git a/src/qt/languages/uk-UA.po b/src/qt/languages/uk-UA.po index e98da1f0c..b29619ae1 100644 --- a/src/qt/languages/uk-UA.po +++ b/src/qt/languages/uk-UA.po @@ -3046,3 +3046,15 @@ msgstr "Темний" msgid "Search:" msgstr "Пошук:" + +msgid "Force interpretation" +msgstr "Примусове тлумачення" + +msgid "Allow recompilation" +msgstr "Дозволити рекомпіляцію" + +msgid "&Force interpretation" +msgstr "&Примусове тлумачення" + +msgid "&Allow recompilation" +msgstr "&Дозволити рекомпіляцію" diff --git a/src/qt/languages/vi-VN.po b/src/qt/languages/vi-VN.po index 09d5defa3..ac374e389 100644 --- a/src/qt/languages/vi-VN.po +++ b/src/qt/languages/vi-VN.po @@ -3038,3 +3038,15 @@ msgstr "Tối" msgid "Search:" msgstr "Tìm:" + +msgid "Force interpretation" +msgstr "Buộc giải thích" + +msgid "Allow recompilation" +msgstr "Cho phép biên dịch lại" + +msgid "&Force interpretation" +msgstr "&Buộc giải thích" + +msgid "&Allow recompilation" +msgstr "&Cho phép biên dịch lại" diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 083f0761a..df323986e 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -164,6 +164,8 @@ keyb_filter(BMessage *message, BHandler **target, BMessageFilter *filter) static BMessageFilter *filter; #endif +extern int cpu_force_interpreter; + extern void qt_mouse_capture(int); extern "C" void qt_blit(int x, int y, int w, int h, int monitor_index); @@ -278,8 +280,24 @@ MainWindow::MainWindow(QWidget *parent) vmname.truncate(vmname.size() - 1); this->setWindowTitle(QString("%1 - %2 %3").arg(vmname, EMU_NAME, EMU_VERSION_FULL)); + connect(this, &MainWindow::forceInterpretationCompleted, this, [this]() { + const auto fi_icon = cpu_force_interpreter ? QIcon(":/menuicons/qt/icons/recompiler.ico") : + QIcon(":/menuicons/qt/icons/interpreter.ico"); + const auto tooltip_text = cpu_force_interpreter ? QString(tr("Allow recompilation")) : + QString(tr("Force interpretation")); + const auto menu_text = cpu_force_interpreter ? QString(tr("&Allow recompilation")) : + QString(tr("&Force interpretation")); + + ui->actionForce_interpretation->setIcon(fi_icon); + ui->actionForce_interpretation->setToolTip(tooltip_text); + ui->actionForce_interpretation->setText(menu_text); + ui->actionForce_interpretation->setChecked(cpu_force_interpreter); + ui->actionForce_interpretation->setEnabled(cpu_use_dynarec); + }); + connect(this, &MainWindow::hardResetCompleted, this, [this]() { ui->actionMCA_devices->setVisible(machine_has_bus(machine, MACHINE_BUS_MCA)); + ui_update_force_interpreter(); num_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD)); scroll_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD)); caps_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD)); @@ -968,6 +986,12 @@ MainWindow::closeEvent(QCloseEvent *event) event->accept(); } +void +ui_update_force_interpreter() +{ + emit main_window->forceInterpretationCompleted(); +} + void MainWindow::updateShortcuts() { @@ -986,6 +1010,7 @@ MainWindow::updateShortcuts() ui->actionHard_Reset->setShortcut(QKeySequence()); ui->actionPause->setShortcut(QKeySequence()); ui->actionMute_Unmute->setShortcut(QKeySequence()); + ui->actionForce_interpretation->setShortcut(QKeySequence()); int accID; QKeySequence seq; @@ -1017,6 +1042,10 @@ MainWindow::updateShortcuts() accID = FindAccelerator("mute"); seq = QKeySequence::fromString(acc_keys[accID].seq); ui->actionMute_Unmute->setShortcut(seq); + + accID = FindAccelerator("force_interpretation"); + seq = QKeySequence::fromString(acc_keys[accID].seq); + ui->actionForce_interpretation->setShortcut(seq); } void @@ -1600,6 +1629,7 @@ MainWindow::refreshMediaMenu() status->refresh(ui->statusbar); ui->actionMCA_devices->setVisible(machine_has_bus(machine, MACHINE_BUS_MCA)); ui->actionACPI_Shutdown->setEnabled(!!acpi_enabled); + ui_update_force_interpreter(); num_label->setToolTip(QShortcut::tr("Num Lock")); num_label->setVisible(machine_has_bus(machine, MACHINE_BUS_PS2_PORTS | MACHINE_BUS_AT_KBD)); @@ -1788,6 +1818,13 @@ MainWindow::on_actionInverted_VGA_monitor_triggered() video_toggle_option(ui->actionInverted_VGA_monitor, &invert_display); } +void +MainWindow::on_actionForce_interpretation_triggered() +{ + cpu_force_interpreter ^= 1; + ui_update_force_interpreter(); +} + static void update_scaled_checkboxes(Ui::MainWindow *ui, QAction *selected) { diff --git a/src/qt/qt_mainwindow.hpp b/src/qt/qt_mainwindow.hpp index 1a1cf4f20..a31900767 100644 --- a/src/qt/qt_mainwindow.hpp +++ b/src/qt/qt_mainwindow.hpp @@ -58,6 +58,7 @@ signals: void destroyRendererMonitor(int monitor_index); void initRendererMonitorForNonQtThread(int monitor_index); void destroyRendererMonitorForNonQtThread(int monitor_index); + void forceInterpretationCompleted(); void hardResetCompleted(); void setTitle(const QString &title); @@ -79,6 +80,7 @@ public slots: void updateStatusEmptyIcons(); void updateUiPauseState(); private slots: + void on_actionForce_interpretation_triggered(); void on_actionFullscreen_triggered(); void on_actionSettings_triggered(); void on_actionExit_triggered(); diff --git a/src/qt/qt_mainwindow.ui b/src/qt/qt_mainwindow.ui index 45c4f70ae..5b5265b42 100644 --- a/src/qt/qt_mainwindow.ui +++ b/src/qt/qt_mainwindow.ui @@ -70,6 +70,8 @@ + + @@ -292,6 +294,8 @@ false + + @@ -302,6 +306,14 @@ + + + true + + + &Force interpretation + + true diff --git a/src/qt_resources.qrc b/src/qt_resources.qrc index 78153d3ff..e68c4e2da 100644 --- a/src/qt_resources.qrc +++ b/src/qt_resources.qrc @@ -68,6 +68,8 @@ qt/icons/send_cad.ico qt/icons/send_cae.ico qt/icons/settings.ico + qt/icons/interpreter.ico + qt/icons/recompiler.ico qt/icons/warning.ico diff --git a/src/unix/unix.c b/src/unix/unix.c index ce644cac6..ee92bddcb 100644 --- a/src/unix/unix.c +++ b/src/unix/unix.c @@ -1731,3 +1731,9 @@ ui_hard_reset_completed(void) { /* No-op. */ } + +void +ui_update_force_interpreter(void) +{ + /* No-op. */ +}