From 0a70b38b69b0c2bea3f8f3f526b75896cf16a805 Mon Sep 17 00:00:00 2001 From: nfore Date: Sat, 12 Oct 2024 19:27:45 -0500 Subject: [PATCH] Combine menu entries for RunAhead and Preemptive Frames --- config.def.h | 2 - configuration.c | 1 - configuration.h | 1 - intl/msg_hash_ar.h | 16 --- intl/msg_hash_be.h | 40 ------ intl/msg_hash_ca.h | 16 --- intl/msg_hash_chs.h | 40 ------ intl/msg_hash_cht.h | 40 ------ intl/msg_hash_cs.h | 40 ------ intl/msg_hash_de.h | 40 ------ intl/msg_hash_en.h | 20 --- intl/msg_hash_es.h | 40 ------ intl/msg_hash_fa.h | 4 - intl/msg_hash_fi.h | 16 --- intl/msg_hash_fr.h | 40 ------ intl/msg_hash_gl.h | 40 ------ intl/msg_hash_hu.h | 40 ------ intl/msg_hash_it.h | 40 ------ intl/msg_hash_ja.h | 40 ------ intl/msg_hash_ko.h | 40 ------ intl/msg_hash_lbl.h | 20 +-- intl/msg_hash_nl.h | 16 --- intl/msg_hash_pl.h | 16 --- intl/msg_hash_pt_br.h | 16 --- intl/msg_hash_ru.h | 40 ------ intl/msg_hash_tr.h | 40 ------ intl/msg_hash_us.h | 50 +++---- intl/msg_hash_val.h | 16 --- menu/cbs/menu_cbs_sublabel.c | 26 +--- menu/menu_defines.h | 13 ++ menu/menu_displaylist.c | 25 +--- menu/menu_driver.c | 28 ++++ menu/menu_driver.h | 7 + menu/menu_setting.c | 255 +++++++++++++++-------------------- msg_hash.h | 13 +- retroarch.c | 27 +++- runahead.c | 4 +- ui/drivers/qt/qt_options.cpp | 16 +-- 38 files changed, 225 insertions(+), 959 deletions(-) diff --git a/config.def.h b/config.def.h index 3fb5276cd10..3682361dcf1 100644 --- a/config.def.h +++ b/config.def.h @@ -1427,8 +1427,6 @@ /* Hide warning messages when using the Run Ahead feature. */ #define DEFAULT_RUN_AHEAD_HIDE_WARNINGS false -/* Hide warning messages when using Preemptive Frames. */ -#define DEFAULT_PREEMPT_HIDE_WARNINGS false /* Enable stdin/network command interface. */ #define DEFAULT_NETWORK_CMD_ENABLE false diff --git a/configuration.c b/configuration.c index 04fb8389f54..a7045f7eaa2 100644 --- a/configuration.c +++ b/configuration.c @@ -1753,7 +1753,6 @@ static struct config_bool_setting *populate_settings_bool( SETTING_BOOL("run_ahead_secondary_instance", &settings->bools.run_ahead_secondary_instance, true, DEFAULT_RUN_AHEAD_SECONDARY_INSTANCE, false); SETTING_BOOL("run_ahead_hide_warnings", &settings->bools.run_ahead_hide_warnings, true, DEFAULT_RUN_AHEAD_HIDE_WARNINGS, false); SETTING_BOOL("preemptive_frames_enable", &settings->bools.preemptive_frames_enable, true, false, false); - SETTING_BOOL("preemptive_frames_hide_warnings", &settings->bools.preemptive_frames_hide_warnings, true, DEFAULT_PREEMPT_HIDE_WARNINGS, false); #if HAVE_MENU SETTING_BOOL("kiosk_mode_enable", &settings->bools.kiosk_mode_enable, true, DEFAULT_KIOSK_MODE_ENABLE, false); #endif diff --git a/configuration.h b/configuration.h index 3591ed40d56..78c1de71f18 100644 --- a/configuration.h +++ b/configuration.h @@ -990,7 +990,6 @@ typedef struct settings bool run_ahead_secondary_instance; bool run_ahead_hide_warnings; bool preemptive_frames_enable; - bool preemptive_frames_hide_warnings; bool pause_nonactive; bool pause_on_disconnect; bool block_sram_overwrite; diff --git a/intl/msg_hash_ar.h b/intl/msg_hash_ar.h index 4a59ecbdf81..7ac1ad2c1ab 100644 --- a/intl/msg_hash_ar.h +++ b/intl/msg_hash_ar.h @@ -2826,26 +2826,10 @@ MSG_HASH( /* Settings > Latency */ -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "ابدأ بتخفيض لاتفيا" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "تشغيل المنطق الأساسي واحد أو أكثر من الأطر القادمة ثم تحميل الحالة مرة أخرى لتقليل التخلف المتوقع في الإدخال." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "عدد الإطارات إلى Run-Aforward" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "استخدام المثيل الثاني للتشغيل" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "استخدم مثيل ثان من قلب RetroArch للمضي قدما. يمنع مشاكل الصوت بسبب حالة التحميل." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "إخفاء التحذيرات" diff --git a/intl/msg_hash_be.h b/intl/msg_hash_be.h index 81adaffc5aa..3f3e8c2571f 100644 --- a/intl/msg_hash_be.h +++ b/intl/msg_hash_be.h @@ -4410,14 +4410,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "Бягучае ядро ​​несумяшчальнае з забяганнем праз адсутнасць дэтэрмінаванай падтрымкі захавання стану." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Забяганне для скарачэння латэнтнасці" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Апрацоўваць логіку ядра на адзін або больш кадраў наперад з наступным адкатам стану для памяншэння атрыманай затрымкі ўводу." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Колькасць кадраў забягання" @@ -4426,14 +4418,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Колькасць кадраў забягання. Выклікае нестабільнасць геймплэя пры завышэнні колькасці кадраў унутрагульнявой затрымкі." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Выкарыстоўваць другасны экзэмпляр для забягання" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Выкарыстоўваць для забягання другасны экзэмпляр ядра RetroArch. Прадухіляе праблемы з гукам падчас загрузкі стану." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Хаваць папярэджанні забягання" @@ -4442,22 +4426,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "Хаваць папярэджанні, якія паказваюцца пры выкарыстанні забягання з ядром без падтрымкі захавання станаў." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Кадры апярэджання недаступныя]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "Бягучае ядро ​​несумяшчальнае з кадрамі апярэджання праз адсутнасць дэтэрмінаванай падтрымкі захавання стану." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Апрацоўка кадраў апярэджання" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "Паўторная апрацоўка логікі ядра з апошнімі падзеямі ўводу пры змене стану кантролера. Працуе хутчэй забегання, але можа выклікаць праблемы з гукам у ядраў пры загрузцы хуткіх захаванняў." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "Колькасць папярэджальных кадраў" @@ -4466,14 +4434,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "Колькасць кадраў для паўторнай апрацоўкі. Выклікае няроўнасць геймплэя, калі перавышана колькасць кадраў унутрагульнявой затрымкі." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Хаваць паведамленні аб папярэджальных кадрах" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Не паказваць папярэджанне пры несумяшчальнасці ядра з папярэджальнымі кадрамі." - ) /* Settings > Core */ diff --git a/intl/msg_hash_ca.h b/intl/msg_hash_ca.h index 78ab3135fa5..dd95159d193 100644 --- a/intl/msg_hash_ca.h +++ b/intl/msg_hash_ca.h @@ -3178,14 +3178,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "El nucli actual és imcompatible amb la reducció predictiva de latència per mancar de suport de desats ràpids determinístics." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Reducció predictiva de latència" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Executa la lògica del nucli un o més fotogrames de bestreta i després carrega un desat ràpid per minvar la latència d'entrada percebuda." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Nombre de fotogrames a la reducció predictiva" @@ -3194,14 +3186,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Determina el nombre de fotogrames a executar de bestreta. Poden haver fluctuacions de senyal si el nombre de fotogrames endarrerits supera al valor intern del joc." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Usa una segona instància per a la reducció predictiva" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Usa una segona instància del nucli RetroArch per portar a terme la reducció predictiva de latència. Capguarda els problemes d'àudio ocasionats al carregar desats ràpids." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Amagar avisos de la reducció predictiva" diff --git a/intl/msg_hash_chs.h b/intl/msg_hash_chs.h index 19782c52a36..525266c2443 100644 --- a/intl/msg_hash_chs.h +++ b/intl/msg_hash_chs.h @@ -4342,14 +4342,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "由于缺少确定性存档支持,当前的核心与超前运行不兼容。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "超前运行以降低延迟" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "提前运行核心逻辑一帧或多帧,然后加载计算好的状态,以降低按键延迟卡顿。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "超前运行的帧数" @@ -4358,14 +4350,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "设置要超前运行的帧数。如果滞后于游戏本体的帧数将导致类似于抖动之类的游戏问题。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "使用第二实例来超前运行" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "使用第二个全能模拟器核心实例来超前运行。防止加载状态导致的音频问题。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "隐藏超前运行警告" @@ -4374,22 +4358,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "当使用「超前运行」功能而核心不支持即时存档时,隐藏警告信息。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[优先帧不可用]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "由于缺少确定性存档支持,当前的核心与[优先帧] 不兼容。" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "运行优先帧" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "当控制器状态发生变化时使用最新输入重新运行核心逻辑。 比超前运行更快,但核心载入时可能出现音频问题。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "设定优先帧数" @@ -4398,14 +4366,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "设置要重新运行的帧数。如果滞后于游戏本体的帧数将导致类似于抖动之类的游戏问题。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "隐藏优先帧警告" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "隐藏当核心与优先帧不兼容时出现的警告信息。" - ) /* Settings > Core */ diff --git a/intl/msg_hash_cht.h b/intl/msg_hash_cht.h index 768f4981d7b..3ff9d81ef71 100644 --- a/intl/msg_hash_cht.h +++ b/intl/msg_hash_cht.h @@ -3966,14 +3966,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "不支援儲存即時存檔, 核心和超前執行不相容。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "開啟超前執行" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "執行虛擬核心邏輯超前一幀或多幀, 接收到控制器輸入時載入, 用於降低按鍵輸入延遲。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "超前執行幀數" @@ -3982,14 +3974,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "設定超前執行的幀數, 如果超過遊戲內設定的延遲幀數, 會導致遊戲畫面發生錯誤。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "第二實例超前執行" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "使用第二個應用程式核心實例進行超前執行, 防止載入即時存檔時產生音訊問題。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "隱藏超前執行警告" @@ -3998,22 +3982,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "隱藏開啟超前執行時, 核心不支援即時存檔的警告通知。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[搶占幀數無法使用]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "不支援儲存即時存檔, 核心和搶占幀數不相容。" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "開啟搶占幀數" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "控制器輸入時重新執行核心邏輯, 比超前執行更快, 但核心載入時可能出現音訊的問題。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "設定搶占幀數" @@ -4022,14 +3990,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "設定重新執行的幀數, 如果超過遊戲內設定的延遲幀數, 會導致遊戲畫面發生錯誤。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "隱藏搶占幀數警告" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "隱藏開啟搶占幀數時, 核心不支援即時存檔的警告通知。" - ) /* Settings > Core */ diff --git a/intl/msg_hash_cs.h b/intl/msg_hash_cs.h index 31b979c666a..9eade777f35 100644 --- a/intl/msg_hash_cs.h +++ b/intl/msg_hash_cs.h @@ -4154,14 +4154,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "Současné jádro je nekompatibilní s run-ahead kvůli chybějící podpoře deterministického ukládání pozic." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Run-Ahead pro snížení zpoždění" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Spusťte logiku jádra o jeden nebo více snímků dopředu a poté načtěte stav zpět, abyste snížili vnímané zpoždění vstupu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Počet snímků do režimu Run-Ahead" @@ -4170,14 +4162,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Počet snímků, které se mají spustit dopředu. Způsobuje problémy s hraním, například trhání, pokud je překročen počet interních zpožděných snímků." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Použít druhý stupeň Run-Ahead" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Použijte druhou instanci jádra RetroArch pro run-ahead. Zabraňuje problémům se zvukem způsobeným stavem načítání." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Skryt varování Run-Ahead" @@ -4186,22 +4170,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "Skrytí varovné zprávy, která se zobrazí při použití funkce Run-Ahead a jádro nepodporuje uložení pozice." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Preemptivní snímky nejsou k dispozici]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "Současné jádro není kompatibilní s preemptivními rámci kvůli chybějící podpoře deterministického stavu ukládání." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Spuštění preemptivních snímků" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "Znovu spustit logiku jádra s posledním vstupem, když se změní stav regulátoru. Rychlejší než Run-Ahead, ale nezabrání problémům se zvukem, které mohou jádra mít s načítáním stavů." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "Počet preemptivních snímků" @@ -4210,14 +4178,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "Počet snímků, které se mají znovu spustit. Způsobuje problémy s hraním, například trhání, pokud je překročen počet zpožděných snímků interně ve hře." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Skrytí varování před preventivními snímky" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Skrytí varovné zprávy, která se zobrazí, když je jádro nekompatibilní s preemptivními snímky." - ) /* Settings > Core */ diff --git a/intl/msg_hash_de.h b/intl/msg_hash_de.h index fd639f2ef2d..42405d91d60 100644 --- a/intl/msg_hash_de.h +++ b/intl/msg_hash_de.h @@ -4286,14 +4286,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "Der aktuelle Core ist aufgrund fehlender deterministischer Savestate-Unterstützung nicht mit Run-ahead kompatibel." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Run-Ahead zur Reduzierung der Latenz" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Führt die Core-Logik einen oder mehrere Frames voraus aus und lädt den vorherigen Zustand zurück, um die wahrgenommene Eingangsverzögerung zu verringern." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Anzahl der Run-Ahead-Frames" @@ -4302,14 +4294,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Die Anzahl Frames, die im Voraus ausgeführt werden sollen. Verursacht Gameplay-Probleme wie z. B. Ruckeln, wenn die Anzahl der spielinternen Verzögerungsframes überschritten wird." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Zweite Instanz für Run-Ahead verwenden" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Für das Run-Ahead eine zweite Instanz des RetroArch-Cores verwenden. Vermeidet Audioprobleme." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Run-Ahead Warnungen ausblenden" @@ -4318,22 +4302,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "Blendet die Warnmeldung aus, die bei Verwendung von Run-Ahead angezeigt wird wenn der Core keine Savestates unterstützt." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Präemptive Frames nicht verfügbar]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "Der aktuelle Core ist nicht mit präemptiven Frames kompatibel aufgrund fehlender deterministischer Savestateunterstützung." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Präemptive Frames ausführen" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "Führt die Corelogik mit der letzten Eingabe erneut aus, wenn sich der Status des Controllers ändert. Schneller als Run-Ahead, verhindert aber nicht Audioprobleme, die Cores beim Laden von Savestates haben können." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "Anzahl präemptiver Frames" @@ -4342,14 +4310,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "Die Anzahl Frames, die im Voraus ausgeführt werden sollen. Verursacht Gameplayprobleme wie z. B. Ruckeln, wenn die Anzahl der spielinternen Verzögerungsframes überschritten wird." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Warnungen für präemptive Frames ausblenden" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Die Warnmeldung verbergen, die erscheint, wenn ein Core nicht mit präemptive Frames kompatibel ist." - ) /* Settings > Core */ diff --git a/intl/msg_hash_en.h b/intl/msg_hash_en.h index d3d2ee9e7cd..1026c47074d 100644 --- a/intl/msg_hash_en.h +++ b/intl/msg_hash_en.h @@ -746,30 +746,10 @@ MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_UNSUPPORTED, "[Run-Ahead is Unavailable]" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Pre-emptive Frames Unavailable]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "Current core is incompatible with pre-emptive frames due to lack of deterministic save state support." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Run Pre-emptive Frames" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "Number of Pre-emptive Frames" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Hide Pre-emptive Frames Warnings" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Hide the warning message that appears when a core is incompatible with pre-emptive frames." - ) /* Settings > Core */ diff --git a/intl/msg_hash_es.h b/intl/msg_hash_es.h index 6b4ced9cd6a..5988080469f 100644 --- a/intl/msg_hash_es.h +++ b/intl/msg_hash_es.h @@ -4386,14 +4386,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "El núcleo actual no es compatible con la reducción predictiva de latencia por no tener soporte para guardados rápidos determinísticos." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Reducción predictiva de latencia" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Ejecuta la lógica del núcleo uno o más fotogramas por anticipado y luego carga un guardado rápido para reducir la latencia de entrada percibida." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Fotogramas a calcular en la reducción predictiva" @@ -4402,14 +4394,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Ajusta el número de fotogramas a ejecutar de forma anticipada. Puede haber distorsiones visuales si el número de fotogramas retrasados supera al valor interno del juego." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Usar una segunda instancia para la reducción predictiva" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Utiliza una segunda instancia del núcleo RetroArch para llevar a cabo la reducción predictiva de latencia. Previene los problemas de audio causados al cargar guardados rápidos." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Ocultar advertencias de reducción predictiva" @@ -4418,22 +4402,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "Oculta el mensaje de advertencia que aparece al usar la reducción predictiva de latencia si el núcleo no es compatible con los guardados rápidos." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Sistema de fotogramas preventivos no disponible]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "El núcleo actual no es compatible con el sistema de fotogramas preventivos por no tener soporte para guardados rápidos determinísticos." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Ejecutar fotogramas preventivos" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "Ejecuta varias veces la lógica del núcleo con las últimas acciones de entrada en cuanto cambie el estado del mando. Este sistema es más rápido que la reducción predictiva de latencia, pero no evita los problemas de audio que podrían tener los núcleos al cargar guardados rápidos." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "N.º de fotogramas preventivos" @@ -4442,14 +4410,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "Ajusta el número de fotogramas preventivos que se ejecutarán. Puede haber distorsiones visuales si el número de fotogramas retrasados supera al valor interno del juego." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Ocultar advertencias de fotogramas preventivos" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Oculta el mensaje de advertencia que aparecerá cuando un núcleo no sea compatible con el sistema de fotogramas preventivos." - ) /* Settings > Core */ diff --git a/intl/msg_hash_fa.h b/intl/msg_hash_fa.h index ff1e993e139..58815b25c95 100644 --- a/intl/msg_hash_fa.h +++ b/intl/msg_hash_fa.h @@ -2534,10 +2534,6 @@ MSG_HASH( /* Settings > Latency */ -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "برای دوباره اجراشدن از نمونه دوم از هسته رترو‌آرچ استفاده می‌کند. از مشکلات صدا در هنگام بارگیری وضعیت جلوگیری می‌شود." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "مخفی کردن هشدار های بازاجرایی" diff --git a/intl/msg_hash_fi.h b/intl/msg_hash_fi.h index bc4ad0d0470..2550a08ac25 100644 --- a/intl/msg_hash_fi.h +++ b/intl/msg_hash_fi.h @@ -3898,26 +3898,10 @@ MSG_HASH( /* Settings > Latency */ -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Edelläaja vähentääksesi viivettä" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Suorita ydinlogiikkaa yksi tai useampi kuva edellä ja lataa sitten tila takaisin vähentäen koettua syöteviivettä." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Edellä olevien kuvien lukumäärä" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Käytä toista instanssia edelläajossa" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Käytä RetroArchin ytimen toista instanssia edelläajoon. Estää pelitilalatauksen aiheuttamia ääniongelmia." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Piilota edelläajoon liittyvät varoitukset" diff --git a/intl/msg_hash_fr.h b/intl/msg_hash_fr.h index 500678705f6..24d21188937 100644 --- a/intl/msg_hash_fr.h +++ b/intl/msg_hash_fr.h @@ -4346,14 +4346,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "Le cœur actuel est incompatible avec l'exécution en avance en raison de la non prise en charge de la sauvegarde instantanée déterministe." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Exécuter en avance pour réduire la latence" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Exécute la logique du cœur une ou plusieurs images à l'avance, puis recharge l'état précédent pour réduire la latence perçue à chaque touche pressée." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Nombre d'images à éxecuter en avance" @@ -4362,14 +4354,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Nombre d'images à exécuter en avance. Provoque des problèmes de jeu tels que des variations de la latence si le nombre d'images de latence interne du jeu est dépassé." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Utiliser une instance secondaire pour l'exécution en avance" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Utilise une seconde instance du cœur RetroArch pour l'exécution en avance. Empêche les problèmes audio dus au chargement de l'état précédent." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Masquer les avertissements pour l'exécution en avance" @@ -4378,22 +4362,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "Masque le message d'avertissement qui apparaît lors de l'utilisation de l'exécution en avance si le cœur ne prend pas en charge les sauvegardes instantanées." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Images préemptives indisponibles]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "Le cœur actuel est incompatible avec les images préemptives en raison de la non prise en charge de la sauvegarde instantanée déterministe." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Exécuter des images préemptives" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "Relancer la logique du cœur avec la dernière entrée lorsque l'état du contrôleur change. Plus rapide que l'exécution en avance, mais ne prévient pas les problèmes audio qui peuvent survenir avec le chargement des sauvegardes instantanées." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "Nombre d'images préemptives" @@ -4402,14 +4370,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "Nombre d'images à relancer. Provoque des problèmes de jeu tels que des variations de la latence si le nombre d'images de latence interne du jeu est dépassé." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Masquer les avertissements des images préemptives" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Masquer le message d'avertissement qui apparaît lorsqu'un cœur est incompatible avec les images préemptives." - ) /* Settings > Core */ diff --git a/intl/msg_hash_gl.h b/intl/msg_hash_gl.h index cb60ec1712d..ff606d059db 100644 --- a/intl/msg_hash_gl.h +++ b/intl/msg_hash_gl.h @@ -4310,14 +4310,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "O núcleo actual é incompatible con adiante debido á falta de soporte determinista para o estado de gardado." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Run-ahead para reducir a latencia" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Execute a lóxica central un ou máis fotogramas por diante e despois cargue o estado de novo para reducir o atraso de entrada percibido." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Número de fotogramas para correr adiante" @@ -4326,14 +4318,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "O número de fotogramas que se van adiante. Causa problemas de xogo, como tremores, se se supera o número de fotogramas de atraso internos do xogo." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Use a segunda instancia para Run-Ahead" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Use unha segunda instancia do núcleo de RetroArch para avanzar. Evita problemas de audio debido ao estado de carga." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Ocultar avisos de adianto" @@ -4342,22 +4326,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "Oculta a mensaxe de aviso que aparece ao usar Run-Ahead e o núcleo non admite os estados de gardar." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Fotogramas preventivos non dispoñibles]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "O núcleo actual é incompatible con fotogramas preventivos debido á falta de soporte determinista para o estado de gardar." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Executar fotogramas preventivos" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "Volve executar a lóxica principal coa entrada máis recente cando o estado do controlador cambie. Máis rápido que Run-Ahead, pero non evita problemas de audio que poden ter os núcleos cos estados de carga." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "Número de fotogramas preventivos" @@ -4366,14 +4334,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "O número de fotogramas para volver executar. Causa problemas de xogo, como tremores, se se supera o número de fotogramas de atraso internos do xogo." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Ocultar avisos de fotogramas preventivos" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Oculta a mensaxe de aviso que aparece cando un núcleo é incompatible cos fotogramas preventivos." - ) /* Settings > Core */ diff --git a/intl/msg_hash_hu.h b/intl/msg_hash_hu.h index 38df0f9b8ce..8dcb7d61337 100644 --- a/intl/msg_hash_hu.h +++ b/intl/msg_hash_hu.h @@ -4382,14 +4382,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "A jelenlegi mag nem kompatibilis a run-ahead funkcióval a determinisztikus játékállás mentés hiánya miatt." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Run-ahead használata" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "A mag továbbfuttatása egy vagy több képkockával, majd az állás visszatöltése, az érzékelt bemeneti késleltetés csökkentése érdekében." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Run-ahead képkockák száma" @@ -4398,14 +4390,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Az előre generált képkockák száma. Ha nagyobb, mint a játék belső késleltetése, gondot okozhat a játékmenetben, például rángatást." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Második példány a run-ahead funkcióhoz" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Egy második RetroArch mag futtatása a run-ahead funkcióhoz. Megelőzi az állásbetöltés miatt fellépő hangproblémákat." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Run-ahead figyelmeztetések elrejtése" @@ -4414,22 +4398,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "A figyelmeztető üzenet elrejtése, ami akkor jelenik meg, ha a run-ahead-et azt nem támogató magnál próbálják bekapcsolni." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Az előre generált képkockák nem elérhetőek]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "A jelenlegi mag nem kompatibilis az előre generált képkockák funkcióval, a determinisztikus játékállás mentés hiánya miatt." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Előre generált képkockák futtatása" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "A mag logikájának újrafuttatása az utolsó bemeneti állapottal, amikor a kontroller állapota megváltozik. Gyorsabb a Run-Ahead-nél, de nem gátolja meg a hangproblémákat, amelyek néhány magnál állásbetöltéskor jelentkeznek." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "Előre generált képkockák száma" @@ -4438,14 +4406,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "Az újrafuttatott képkockák száma. Ha nagyobb, mint a játék belső késleltetése, gondot okozhat a játékmenetben, például rángatást." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Az előre generált képkockák figyelmeztetéseinek elrejtése" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "A figyelmeztetés elrejtése, amely akkor jelenik meg, ha a mag nem kompatibilis az előre generált képkockák funkcióval." - ) /* Settings > Core */ diff --git a/intl/msg_hash_it.h b/intl/msg_hash_it.h index 1b0cf92c760..4bdcd8bef89 100644 --- a/intl/msg_hash_it.h +++ b/intl/msg_hash_it.h @@ -4318,14 +4318,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "Il nucleo attuale è incompatibile con il run-ahead a causa della mancanza del salvataggio di stato deterministico." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Run-Ahead - Riduzione della Latenza" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Eseguire la logica di un core per uno o più fotogrammi avanti, e dopo caricare lo stato di nuovo per ridurre il ritardo percepito in ingresso." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Run-Ahead - Numero di Frame da Anticipare" @@ -4334,14 +4326,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Il numero di fotogrammi da eseguire in anticipo. Causa problemi di gameplay come il jitter se il numero di fotogrammi di ritardo interni al gioco viene superato." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Run-Ahead - Usa una Seconda Istanza" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Usa una seconda instanza del core di RetroArch per l'anticipazione predittiva. Previene problemi audio dovuti al costante caricamento di uno stato di salvataggio." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Nascondi Avvisi sull'Anticipazione" @@ -4350,22 +4334,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "Nascondi il messaggio di avviso che appare quando si usa l'Anticipazione e il core non supporta gli stati di salvataggio." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Frame Preventivi Non Disponibili]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "Il core attuale è incompatibile con i fotogrammi preventivi a causa della mancanza di un sostegno di Stato deterministico di salvataggio." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Esegui Frame Preventivi" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "Rerun core logic con l'ultimo input quando lo stato del controller cambia. Più veloce di Run-Ahead, ma non impedisce i problemi audio core possono avere con gli stati di caricamento." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "Numero di frame preventivi" @@ -4374,14 +4342,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "Il numero di fotogrammi da riprodurre. Causa problemi di gameplay come il jitter se il numero di fotogrammi di ritardo interni al gioco viene superato." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Nascondi Avvertenze frame preventivi" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Nascondi il messaggio di avviso che appare quando un nucleo è incompatibile con i frame preventivi." - ) /* Settings > Core */ diff --git a/intl/msg_hash_ja.h b/intl/msg_hash_ja.h index 77901bf5c83..a2f5b0b8970 100644 --- a/intl/msg_hash_ja.h +++ b/intl/msg_hash_ja.h @@ -4366,14 +4366,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "現在のコアは確定的なステートセーブの対応がないため、先行実行との互換性がありません。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "先行実行して遅延を減らす" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "コアロジックを 1 フレーム以上先に実行し、ステートをロードし直すことで認識された入力遅延を軽減します。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "先行実行するフレーム数" @@ -4382,14 +4374,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "先行実行するフレームの数です。ゲーム内部のラグフレーム数を超えると、ジッターなどのゲームプレイの問題が発生します。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "先行実行に 2 番目のインスタンスを使用" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "RetroArch コアのセカンダリインスタンスを使用して先行実行します。ステートロードによるオーディオの問題を防止します。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "先行実行の警告を隠す" @@ -4398,22 +4382,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "先行実行を使用する際、コアがステートセーブに対応していない場合に表示される警告メッセージを非表示にします。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[先制フレームを利用できません]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "現在のコアは確定的なステートセーブの対応がないため、先制フレームとの互換性がありません。" - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "先制フレームを実行" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "コントローラーの状態が変更されたとき、最新の入力でコアロジックを再実行します。先行実行より高速ですが、ステートロードでコアに発生する可能性があるオーディオの問題を防止できません。" - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "先制フレーム数" @@ -4422,14 +4390,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "再実行するフレームの数です。ゲーム内部のラグフレームの数を越えた場合、ジッターなどのゲームプレイの問題が発生します。" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "先制フレームの警告を隠す" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "コアが先制フレームと互換性がない場合に表示される警告メッセージを隠します。" - ) /* Settings > Core */ diff --git a/intl/msg_hash_ko.h b/intl/msg_hash_ko.h index a64c6cc4d8e..7ec24e123ef 100644 --- a/intl/msg_hash_ko.h +++ b/intl/msg_hash_ko.h @@ -4422,14 +4422,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "이 코어는 결정식 상태저장을 지원하지 않아 미리 실행과 호환되지 않습니다." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "미리 실행으로 지연 줄이기" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "하나 혹은 그 이상의 프레임을 먼저 실행하고 이전 상태로 되돌리는 방식을 통해 입력지연을 줄여줍니다." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "미리 실행할 프레임 수" @@ -4438,14 +4430,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "먼저 실행할 프레임 수를 설정합니다. 게임 자체의 지연 프레임을 넘어설 경우 화면이 떨리는 등 게임플레이에 문제가 생길 수 있습니다." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "미리 실행에 두 번째 인스턴스 사용" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "미리 실행에 두 번째 인스턴스를 사용합니다. 상태저장 불러오기 중에 발생하는 오디오 문제를 해결할 수 있습니다." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "미리 실행 경고 숨김" @@ -4454,22 +4438,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "상태저장을 지원하지 않는 코어에서 미리 실행 사용 시 경고 메시지를 표시하지 않습니다." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[선제 프레임 기능 사용불가]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "이 코어는 결정식 상태저장을 지원하지 않아 선제 프레임 기능과 호환되지 않습니다." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "선제 프레임 실행" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "컨트롤러 상태가 변경되면 최근 입력으로 코어 로직을 다시 실행합니다. 미리실행보다 빠르지만 상태 불러오기에서 코어에 발생할 수 있는 오디오 문제를 막지는 못합니다." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "선제 프레임 수" @@ -4478,14 +4446,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "다시 실행할 프레임 수를 설정합니다. 게임 자체의 지연 프레임을 넘어설 경우 화면이 떨리는 등 게임플레이에 문제가 생길 수 있습니다." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "선제 프레임 경고 숨김" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "선제 프레임 기능 사용시 호환되지 않는 코어에서 보이는 경고 메시지를 숨김니다." - ) /* Settings > Core */ diff --git a/intl/msg_hash_lbl.h b/intl/msg_hash_lbl.h index 35bfefd4d58..b4f350e8ede 100644 --- a/intl/msg_hash_lbl.h +++ b/intl/msg_hash_lbl.h @@ -3765,12 +3765,8 @@ MSG_HASH( "run_ahead_unsupported" ) MSG_HASH( - MENU_ENUM_LABEL_RUN_AHEAD_ENABLED, - "run_ahead_enabled" - ) -MSG_HASH( - MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "run_ahead_secondary_instance" + MENU_ENUM_LABEL_RUNAHEAD_MODE, + "run_ahead_mode" ) MSG_HASH( MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS, @@ -3780,18 +3776,6 @@ MSG_HASH( MENU_ENUM_LABEL_RUN_AHEAD_FRAMES, "run_ahead_frames" ) -MSG_HASH( - MENU_ENUM_LABEL_PREEMPT_ENABLE, - "preemptive_frames_enable" - ) -MSG_HASH( - MENU_ENUM_LABEL_PREEMPT_UNSUPPORTED, - "preemptive_frames_unsupported" - ) -MSG_HASH( - MENU_ENUM_LABEL_PREEMPT_HIDE_WARNINGS, - "preemptive_frames_hide_warnings" - ) MSG_HASH( MENU_ENUM_LABEL_PREEMPT_FRAMES, "preemptive_frames" diff --git a/intl/msg_hash_nl.h b/intl/msg_hash_nl.h index 674929e6ee5..8819b1962e4 100644 --- a/intl/msg_hash_nl.h +++ b/intl/msg_hash_nl.h @@ -3518,14 +3518,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "De huidige core is onverenigbaar met run-ahead vanwege een gebrek aan deterministische slaagstaat-ondersteuning." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Run-Ahead om de Vertraging te Verminderen" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Voer core-logica één of meer frames vooruit en laad de staat terug om de waargenomen invoervertraging te verminderen." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Aantal Frames om Vooruit te Lopen" @@ -3534,14 +3526,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Het aantal frames dat vooruit moet lopen. Veroorzaakt gameplay-problemen zoals jitter als het aantal lag-frames in de game wordt overschreden." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Tweede Instantie voor Run-Ahead gebruiken" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Gebruik een tweede instantie van de RetroArch-core om vooruit te lopen. Voorkomt audioproblemen door laadstatus." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Verberg Run-Ahead Waarschuwingen" diff --git a/intl/msg_hash_pl.h b/intl/msg_hash_pl.h index 09659d256cc..3080cdcdc15 100644 --- a/intl/msg_hash_pl.h +++ b/intl/msg_hash_pl.h @@ -4014,26 +4014,10 @@ MSG_HASH( /* Settings > Latency */ -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Uruchomienie z wyprzedzeniem aby zmniejszyć opóźnienia" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Uruchom logikę rdzenia o jedną lub więcej klatek z wyprzedzeniem, a następnie załaduj stan z powrotem, aby zmniejszyć postrzegane opóźnienie wejścia." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Liczba klatek uruchomienia z wyprzedzeniem" ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Użyj drugiej instancji dla uruchomienia z wyprzedzeniem" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Użyj drugiej instancji rdzenia RetroArch do uruchomienia z wyprzedzeniem. Zapobiega problemom dźwiękowym z powodu ładowania stanu." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Ukryj ostrzeżenia uruchomienia z wyprzedzeniem" diff --git a/intl/msg_hash_pt_br.h b/intl/msg_hash_pt_br.h index 61deda838b9..6fad2b9c6bc 100644 --- a/intl/msg_hash_pt_br.h +++ b/intl/msg_hash_pt_br.h @@ -3826,14 +3826,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "Núcleo atual é incompatível com a execução antecipada, porque não tem suporte determinístico ao jogo salvo." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Execução antecipada para reduzir a latência" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Executa a lógica do núcleo um ou mais quadros adiantado e carrega o jogo salvo para reduzir a latência dos controles percebida." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Número de quadros para a execução antecipada" @@ -3842,14 +3834,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "O número de quadros para a execução antecipada. Pode causar problemas de jogabilidade, como jitter, caso o número de quadros atrasados internos seja excedido." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Usar segunda instância para a \"Execução antecipada\"" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Usa uma segunda instância do núcleo do RetroArch para antecipar quadros. Evita problemas de áudio devido ao estado de carregamento." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Ocultar avisos de execução antecipada de quadros" diff --git a/intl/msg_hash_ru.h b/intl/msg_hash_ru.h index 54470be58c9..d102e342ee6 100644 --- a/intl/msg_hash_ru.h +++ b/intl/msg_hash_ru.h @@ -4410,14 +4410,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "Текущее ядро несовместимо с забеганием из-за отсутствия детерминированной поддержки быстрых сохранений." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Забегание для снижения задержки ввода" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Обрабатывать логику ядра на один или более кадров вперёд с последующим откатом состояния для уменьшения полученной задержки ввода." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Количество кадров забегания" @@ -4426,14 +4418,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Количество кадров забегания. Вызывает нестабильность геймплея при завышении количества кадров внутриигровой задержки." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Использовать второй инстанс для забегания" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Использовать для забегания второй экземпляр ядра RetroArch. Устраняет проблемы со звуком, вызываемые загрузкой сохранений." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Скрывать предупреждения забегания" @@ -4442,22 +4426,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "Не показывать предупреждение, если включено забегание и ядро не поддерживает сохранение состояния." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Упреждающие кадры недоступны]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "Текущее ядро несовместимо с кадрами упреждения из-за отсутствия детерминированной поддержки быстрых сохранений." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Обработка упреждающих кадров" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "Повторная обработка логики ядра с последними событиями ввода при изменении состояния контроллера. Работает быстрее забегания, но может вызывать проблемы со звуком у ядер при загрузке быстрых сохранений." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "Количество упреждающих кадров" @@ -4466,14 +4434,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "Количество кадров для повторной обработки. Вызывает неровность геймплея, если превышено количество кадров внутриигровой задержки." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Скрывать сообщения об упреждающих кадрах" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Не показывать предупреждение при несовместимости ядра с упреждающими кадрами." - ) /* Settings > Core */ diff --git a/intl/msg_hash_tr.h b/intl/msg_hash_tr.h index db6885bf64d..b3e7b8329f0 100644 --- a/intl/msg_hash_tr.h +++ b/intl/msg_hash_tr.h @@ -4386,14 +4386,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "Mevcut çekirdek, deterministik tasarruf durumu desteğinin olmaması nedeniyle önden git ile uyumlu değil." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Gecikmeyi Azaltmak için Önden-Git" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Çekirdek mantığını bir veya daha fazla karenin önünde çalıştırın, ardından algılanan giriş gecikmesini azaltmak için durumu geri yükleyin." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Önden Gidilecek Kare Sayısı" @@ -4402,14 +4394,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Önde çalıştırılacak kare sayısı. Oyunun içindeki gecikme karelerinin sayısı aşılırsa titreme gibi oyun sorunlarına neden olur." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Önden-Git için İkinci Örneği Kullan" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Önden-Git için RetroArch çekirdeğinin ikincil örneğini kullanın. Yükleme durumu nedeniyle ses sorunlarını önler." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Önden-Git Uyarılarını Gizle" @@ -4418,22 +4402,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, "Önden-Git kullanırken görüntülenen uyarı mesajını gizleyin ve çekirdek durum kaydı desteklemez." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Sınırlı Kareler Kullanılamıyor]" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "Mevcut çekirdek, deterministik durum kaydı desteğinin olmaması nedeniyle sınırlı karelerle uyumlu değil." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Sınırlı Kareleri Çalıştır" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "Kontrolcü durumu değiştiğinde çekirdeği en son girdiyle yeniden çalıştırın. Önden-Git yönteminden daha hızlıdır, ancak çekirdeklerin durum kaydı yüklemelerinde olabilecek ses sorunlarını engellemez." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, "Sınırlı Kare Sayısı" @@ -4442,14 +4410,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "Yeniden çalıştırılacak kare sayısı. Oyunun içindeki sınırlı karelerin sayısı aşılırsa titreme gibi oyun sorunlarına neden olur." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Sınırlı Kareler Uyarılarını Gizle" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Bir çekirdek sınırlı karelerle uyumsuz olduğunda görüntülenen uyarı mesajını gizleyin." - ) /* Settings > Core */ diff --git a/intl/msg_hash_us.h b/intl/msg_hash_us.h index 0cc79ea5bb9..55eab30e996 100644 --- a/intl/msg_hash_us.h +++ b/intl/msg_hash_us.h @@ -4455,12 +4455,8 @@ MSG_HASH( "Current core is incompatible with run-ahead due to lack of deterministic save state support." ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Run-Ahead to Reduce Latency" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Run core logic one or more frames ahead then load the state back to reduce perceived input lag." + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE, + "Run-Ahead" ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, @@ -4471,36 +4467,34 @@ MSG_HASH( "The number of frames to run ahead. Causes gameplay issues such as jitter if the number of lag frames internal to the game is exceeded." ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Use Second Instance for Run-Ahead" + MENU_ENUM_SUBLABEL_RUNAHEAD_MODE, + "Run additional core logic to reduce latency. Single Instance runs to a future frame, then reloads the current state. Second Instance keeps a video-only core instance at a future frame to avoid audio state issues. Preemptive Frames runs past frames with new input when needed, for efficiency." ) +#if !(defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)) MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Use a second instance of the RetroArch core to run-ahead. Prevents audio problems due to loading state." - ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, - "Hide Run-Ahead Warnings" + MENU_ENUM_SUBLABEL_RUNAHEAD_MODE_NO_SECOND_INSTANCE, + "Run additional core logic to reduce latency. Single Instance runs to a future frame, then reloads the current state. Preemptive Frames runs past frames with new input when needed, for efficiency." ) +#endif MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, - "Hide the warning message that appears when using Run-Ahead and the core does not support save states." + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_SINGLE_INSTANCE, + "Single Instance Mode" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED, - "[Preemptive Frames Unavailable]" + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_SECOND_INSTANCE, + "Second Instance Mode" ) MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED, - "Current core is incompatible with preemptive frames due to lack of deterministic save state support." + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_PREEMPTIVE_FRAMES, + "Preemptive Frames Mode" ) MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - "Run Preemptive Frames" + MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, + "Hide Run-Ahead Warnings" ) MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_ENABLE, - "Rerun core logic with the latest input when the controller state changes. Faster than Run-Ahead, but does not prevent audio issues cores may have with loading states." + MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS, + "Hide the warning message that appears when using Run-Ahead and the core does not support save states." ) MSG_HASH( MENU_ENUM_LABEL_VALUE_PREEMPT_FRAMES, @@ -4510,14 +4504,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_PREEMPT_FRAMES, "The number of frames to rerun. Causes gameplay issues such as jitter if the number of lag frames internal to the game is exceeded." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - "Hide Preemptive Frames Warnings" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS, - "Hide the warning message that appears when a core is incompatible with preemptive frames." - ) /* Settings > Core */ diff --git a/intl/msg_hash_val.h b/intl/msg_hash_val.h index c3ed4d09676..0b6b0a2e414 100644 --- a/intl/msg_hash_val.h +++ b/intl/msg_hash_val.h @@ -2442,14 +2442,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED, "El nucli actual és imcompatible amb la reducció predictiva de latència per mancar de suport de desats ràpids determinístics." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - "Reducció predictiva de latència" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED, - "Executa la lògica del nucli un o més fotogrames amb antelació i després carrega un guardat ràpid per a fer decréixer la latència d'entrada percebuda." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, "Nombre de fotogrames a la reducció predictiva" @@ -2458,14 +2450,6 @@ MSG_HASH( MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES, "Determina el nombre de fotogrames a executar amb antelació. Poden haver fluctuacions de senyal si el nombre de fotogrames endarrerits supera al valor intern del joc." ) -MSG_HASH( - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - "Usa una segona instància per a la reducció predictiva" - ) -MSG_HASH( - MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE, - "Usa una segona instància del nucli RetroArch per portar a terme la reducció predictiva de latència. Evita els problemes d'àudio ocasionats al carregar guardats ràpids." - ) MSG_HASH( MENU_ENUM_LABEL_VALUE_RUN_AHEAD_HIDE_WARNINGS, "Amagar avisos de la reducció predictiva" diff --git a/menu/cbs/menu_cbs_sublabel.c b/menu/cbs/menu_cbs_sublabel.c index 2e03175b3ac..5f199b1db86 100644 --- a/menu/cbs/menu_cbs_sublabel.c +++ b/menu/cbs/menu_cbs_sublabel.c @@ -739,13 +739,13 @@ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_vrr_runloop_enable, MENU_ DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_menu_throttle_framerate, MENU_ENUM_SUBLABEL_MENU_ENUM_THROTTLE_FRAMERATE) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_slowmotion_ratio, MENU_ENUM_SUBLABEL_SLOWMOTION_RATIO) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_run_ahead_unsupported, MENU_ENUM_SUBLABEL_RUN_AHEAD_UNSUPPORTED) -DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_run_ahead_enabled, MENU_ENUM_SUBLABEL_RUN_AHEAD_ENABLED) -DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_run_ahead_secondary_instance, MENU_ENUM_SUBLABEL_RUN_AHEAD_SECONDARY_INSTANCE) +#if (defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)) +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_runahead_mode, MENU_ENUM_SUBLABEL_RUNAHEAD_MODE) +#else +DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_runahead_mode, MENU_ENUM_SUBLABEL_RUNAHEAD_MODE_NO_SECOND_INSTANCE) +#endif DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_run_ahead_hide_warnings, MENU_ENUM_SUBLABEL_RUN_AHEAD_HIDE_WARNINGS) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_run_ahead_frames, MENU_ENUM_SUBLABEL_RUN_AHEAD_FRAMES) -DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_preempt_unsupported, MENU_ENUM_SUBLABEL_PREEMPT_UNSUPPORTED) -DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_preempt_enable, MENU_ENUM_SUBLABEL_PREEMPT_ENABLE) -DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_preempt_hide_warnings, MENU_ENUM_SUBLABEL_PREEMPT_HIDE_WARNINGS) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_preempt_frames, MENU_ENUM_SUBLABEL_PREEMPT_FRAMES) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_input_block_timeout, MENU_ENUM_SUBLABEL_INPUT_BLOCK_TIMEOUT) DEFAULT_SUBLABEL_MACRO(action_bind_sublabel_rewind, MENU_ENUM_SUBLABEL_REWIND_ENABLE) @@ -4177,11 +4177,8 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_RUN_AHEAD_UNSUPPORTED: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_run_ahead_unsupported); break; - case MENU_ENUM_LABEL_RUN_AHEAD_ENABLED: - BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_run_ahead_enabled); - break; - case MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE: - BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_run_ahead_secondary_instance); + case MENU_ENUM_LABEL_RUNAHEAD_MODE: + BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_runahead_mode); break; case MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_run_ahead_hide_warnings); @@ -4189,18 +4186,9 @@ int menu_cbs_init_bind_sublabel(menu_file_list_cbs_t *cbs, case MENU_ENUM_LABEL_RUN_AHEAD_FRAMES: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_run_ahead_frames); break; - case MENU_ENUM_LABEL_PREEMPT_UNSUPPORTED: - BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_preempt_unsupported); - break; - case MENU_ENUM_LABEL_PREEMPT_ENABLE: - BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_preempt_enable); - break; case MENU_ENUM_LABEL_PREEMPT_FRAMES: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_preempt_frames); break; - case MENU_ENUM_LABEL_PREEMPT_HIDE_WARNINGS: - BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_preempt_hide_warnings); - break; case MENU_ENUM_LABEL_INPUT_BLOCK_TIMEOUT: BIND_ACTION_SUBLABEL(cbs, action_bind_sublabel_input_block_timeout); break; diff --git a/menu/menu_defines.h b/menu/menu_defines.h index 6801bc47e89..c94f8d47866 100644 --- a/menu/menu_defines.h +++ b/menu/menu_defines.h @@ -551,6 +551,19 @@ struct menu_dialog typedef struct menu_dialog menu_dialog_t; +#ifdef HAVE_RUNAHEAD +enum menu_runahead_mode +{ + MENU_RUNAHEAD_MODE_OFF = 0, + MENU_RUNAHEAD_MODE_SINGLE_INSTANCE, +#if (defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)) + MENU_RUNAHEAD_MODE_SECOND_INSTANCE, +#endif + MENU_RUNAHEAD_MODE_PREEMPTIVE_FRAMES, + MENU_RUNAHEAD_MODE_LAST +}; +#endif + RETRO_END_DECLS #endif diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 93e3f9b1013..237537d9436 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -10280,13 +10280,10 @@ unsigned menu_displaylist_build_list( {MENU_ENUM_LABEL_VIDEO_FRAME_DELAY_AUTO, PARSE_ONLY_BOOL, true }, {MENU_ENUM_LABEL_VIDEO_FRAME_DELAY, PARSE_ONLY_UINT, true }, #ifdef HAVE_RUNAHEAD - {MENU_ENUM_LABEL_RUN_AHEAD_ENABLED, PARSE_ONLY_BOOL, false }, + {MENU_ENUM_LABEL_RUNAHEAD_MODE, PARSE_ONLY_UINT, false }, {MENU_ENUM_LABEL_RUN_AHEAD_FRAMES, PARSE_ONLY_UINT, false }, - {MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE, PARSE_ONLY_BOOL, false }, - {MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS, PARSE_ONLY_BOOL, false }, - {MENU_ENUM_LABEL_PREEMPT_ENABLE, PARSE_ONLY_BOOL, false }, {MENU_ENUM_LABEL_PREEMPT_FRAMES, PARSE_ONLY_UINT, false }, - {MENU_ENUM_LABEL_PREEMPT_HIDE_WARNINGS, PARSE_ONLY_BOOL, false }, + {MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS, PARSE_ONLY_BOOL, false }, #endif }; @@ -10339,21 +10336,21 @@ unsigned menu_displaylist_build_list( { switch (build_list[i].enum_idx) { - case MENU_ENUM_LABEL_RUN_AHEAD_ENABLED: - case MENU_ENUM_LABEL_PREEMPT_ENABLE: + case MENU_ENUM_LABEL_RUNAHEAD_MODE: build_list[i].checked = true; break; case MENU_ENUM_LABEL_RUN_AHEAD_FRAMES: - case MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE: - case MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS: if (runahead_enabled) build_list[i].checked = true; break; case MENU_ENUM_LABEL_PREEMPT_FRAMES: - case MENU_ENUM_LABEL_PREEMPT_HIDE_WARNINGS: if (preempt_enabled) build_list[i].checked = true; break; + case MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS: + if (runahead_enabled || preempt_enabled) + build_list[i].checked = true; + break; default: break; } @@ -10373,20 +10370,12 @@ unsigned menu_displaylist_build_list( #ifdef HAVE_RUNAHEAD if (!runahead_supported) - { if (menu_entries_append(list, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_RUN_AHEAD_UNSUPPORTED), msg_hash_to_str(MENU_ENUM_LABEL_RUN_AHEAD_UNSUPPORTED), MENU_ENUM_LABEL_RUN_AHEAD_UNSUPPORTED, FILE_TYPE_NONE, 0, 0, NULL)) count++; - if (menu_entries_append(list, - msg_hash_to_str(MENU_ENUM_LABEL_VALUE_PREEMPT_UNSUPPORTED), - msg_hash_to_str(MENU_ENUM_LABEL_PREEMPT_UNSUPPORTED), - MENU_ENUM_LABEL_PREEMPT_UNSUPPORTED, - FILE_TYPE_NONE, 0, 0, NULL)) - count++; - } #endif #ifndef HAVE_LAKKA if (MENU_DISPLAYLIST_PARSE_SETTINGS_ENUM(list, diff --git a/menu/menu_driver.c b/menu/menu_driver.c index ea1106d091f..436f8afdfac 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -8108,3 +8108,31 @@ size_t menu_driver_get_thumbnail_system(void *data, char *s, size_t len) return 0; return strlcpy(s, system, len); } + +#ifdef HAVE_RUNAHEAD +/** + * menu_update_runahead_mode + * + * Updates the menu runahead mode to match current settings for runahead + * and preemptive frames. + */ +void menu_update_runahead_mode(void) +{ + struct menu_state *menu_st = menu_state_get_ptr(); + settings_t *settings = config_get_ptr(); + + if (settings->bools.run_ahead_enabled) + { +#if (defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)) + if (settings->bools.run_ahead_secondary_instance) + menu_st->runahead_mode = MENU_RUNAHEAD_MODE_SECOND_INSTANCE; + else +#endif + menu_st->runahead_mode = MENU_RUNAHEAD_MODE_SINGLE_INSTANCE; + } + else if (settings->bools.preemptive_frames_enable) + menu_st->runahead_mode = MENU_RUNAHEAD_MODE_PREEMPTIVE_FRAMES; + else + menu_st->runahead_mode = MENU_RUNAHEAD_MODE_OFF; +} +#endif diff --git a/menu/menu_driver.h b/menu/menu_driver.h index e4fd4852aab..8ea9d9e33e2 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -508,6 +508,9 @@ struct menu_state unsigned input_driver_flushing_input; menu_dialog_t dialog_st; enum menu_action prev_action; +#ifdef HAVE_RUNAHEAD + enum menu_runahead_mode runahead_mode; +#endif /* int16_t alignment */ menu_input_pointer_hw_state_t input_pointer_hw_state; @@ -748,6 +751,10 @@ void menu_driver_set_thumbnail_system(void *data, char *s, size_t len); size_t menu_driver_get_thumbnail_system(void *data, char *s, size_t len); +#ifdef HAVE_RUNAHEAD +void menu_update_runahead_mode(void); +#endif + extern const menu_ctx_driver_t *menu_ctx_drivers[]; extern menu_ctx_driver_t menu_ctx_ozone; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index e6c50bd508b..a4bb61bb091 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -7169,6 +7169,37 @@ static void setting_get_string_representation_poll_type_behavior( } } +#ifdef HAVE_RUNAHEAD +static void setting_get_string_representation_runahead_mode( + rarch_setting_t *setting, + char *s, size_t len) +{ + if (!setting) + return; + + switch (*setting->value.target.unsigned_integer) + { + case MENU_RUNAHEAD_MODE_SINGLE_INSTANCE: + strlcpy(s, msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_SINGLE_INSTANCE), len); + break; +#if (defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)) + case MENU_RUNAHEAD_MODE_SECOND_INSTANCE: + strlcpy(s, msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_SECOND_INSTANCE), len); + break; +#endif + case MENU_RUNAHEAD_MODE_PREEMPTIVE_FRAMES: + strlcpy(s, msg_hash_to_str( + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_PREEMPTIVE_FRAMES), len); + break; + default: + strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_OFF), len); + break; + } +} +#endif + static void setting_get_string_representation_input_touch_scale(rarch_setting_t *setting, char *s, size_t len) { @@ -9166,96 +9197,68 @@ static void frontend_log_level_change_handler(rarch_setting_t *setting) #ifdef HAVE_RUNAHEAD static void runahead_change_handler(rarch_setting_t *setting) { - settings_t *settings = config_get_ptr(); - struct menu_state *menu_st = menu_state_get_ptr(); - bool run_ahead_enabled = settings->bools.run_ahead_enabled; - bool preempt_enabled = settings->bools.preemptive_frames_enable; -#if (defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)) - unsigned run_ahead_frames = settings->uints.run_ahead_frames; - bool run_ahead_secondary_instance = settings->bools.run_ahead_secondary_instance; -#endif + settings_t *settings = config_get_ptr(); + struct menu_state *menu_st = menu_state_get_ptr(); + runloop_state_t *runloop_st = runloop_state_get_ptr(); + preempt_t *preempt = runloop_st->preempt_data; + unsigned run_ahead_frames = settings->uints.run_ahead_frames; + bool preempt_enable, run_ahead_enabled, secondary_instance; if (!setting) return; - switch (setting->enum_idx) + if (setting->enum_idx == MENU_ENUM_LABEL_RUNAHEAD_MODE) { - case MENU_ENUM_LABEL_RUN_AHEAD_ENABLED: - if (run_ahead_enabled && preempt_enabled) - { - /* Disable preemptive frames and inform user */ - settings->bools.preemptive_frames_enable = false; - preempt_deinit(runloop_state_get_ptr()); - runloop_msg_queue_push( - msg_hash_to_str(MSG_PREEMPT_DISABLED), 1, 100, false, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - } - menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH; - /* fall-through */ - case MENU_ENUM_LABEL_RUN_AHEAD_FRAMES: + switch (menu_st->runahead_mode) + { + case MENU_RUNAHEAD_MODE_SINGLE_INSTANCE: + settings->bools.run_ahead_enabled = true; + settings->bools.run_ahead_secondary_instance = false; + settings->bools.preemptive_frames_enable = false; + break; #if (defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)) - case MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE: - /* If any changes here will cause second - * instance runahead to be enabled, must - * re-apply cheats to ensure that they - * propagate to the newly-created secondary - * core */ - if ( run_ahead_enabled - && (run_ahead_frames > 0) - && run_ahead_secondary_instance - && !retroarch_ctl(RARCH_CTL_IS_SECOND_CORE_LOADED, NULL) - && retroarch_ctl(RARCH_CTL_IS_SECOND_CORE_AVAILABLE, NULL) - && command_event(CMD_EVENT_LOAD_SECOND_CORE, NULL)) - command_event(CMD_EVENT_CHEATS_APPLY, NULL); -#endif - break; - default: - break; - } -} - -static void preempt_change_handler(rarch_setting_t *setting) -{ - settings_t *settings = config_get_ptr(); - bool preempt_enabled = settings->bools.preemptive_frames_enable; - bool run_ahead_enabled = settings->bools.run_ahead_enabled; - preempt_t *preempt = runloop_state_get_ptr()->preempt_data; - struct menu_state *menu_st = menu_state_get_ptr(); -#ifdef HAVE_NETWORKING - bool netplay_enabled = netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL); -#else - bool netplay_enabled = false; + case MENU_RUNAHEAD_MODE_SECOND_INSTANCE: + settings->bools.run_ahead_enabled = true; + settings->bools.run_ahead_secondary_instance = true; + settings->bools.preemptive_frames_enable = false; + break; #endif + case MENU_RUNAHEAD_MODE_PREEMPTIVE_FRAMES: + settings->bools.run_ahead_enabled = false; + settings->bools.preemptive_frames_enable = true; + break; + default: + settings->bools.run_ahead_enabled = false; + settings->bools.preemptive_frames_enable = false; + break; + } - if (!setting) - return; + menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH; + } - switch (setting->enum_idx) - { - case MENU_ENUM_LABEL_PREEMPT_ENABLE: - if (preempt_enabled && run_ahead_enabled) - { - /* Disable runahead and inform user */ - settings->bools.run_ahead_enabled = false; - runloop_msg_queue_push( - msg_hash_to_str(MSG_RUNAHEAD_DISABLED), 1, 100, false, - NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); - } + preempt_enable = settings->bools.preemptive_frames_enable; + run_ahead_enabled = settings->bools.run_ahead_enabled; + secondary_instance = settings->bools.run_ahead_secondary_instance; - if ((preempt_enabled != !!preempt) && !netplay_enabled) - command_event(CMD_EVENT_PREEMPT_UPDATE, NULL); + /* Toggle or update preemptive frames if needed */ + if ( preempt_enable != !!preempt + || (preempt && preempt->frames != run_ahead_frames)) + command_event(CMD_EVENT_PREEMPT_UPDATE, NULL); - menu_st->flags |= MENU_ST_FLAG_ENTRIES_NEED_REFRESH; - break; - case MENU_ENUM_LABEL_PREEMPT_FRAMES: - if ( preempt - && preempt->frames != settings->uints.run_ahead_frames - && !netplay_enabled) - command_event(CMD_EVENT_PREEMPT_UPDATE, NULL); - break; - default: - break; - } +#if (defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)) + /* If any changes here will cause second + * instance runahead to be enabled, must + * re-apply cheats to ensure that they + * propagate to the newly-created secondary + * core */ + if ( run_ahead_enabled + && run_ahead_frames > 0 + && secondary_instance + && !retroarch_ctl(RARCH_CTL_IS_SECOND_CORE_LOADED, NULL) + && retroarch_ctl(RARCH_CTL_IS_SECOND_CORE_AVAILABLE, NULL) + && command_event(CMD_EVENT_LOAD_SECOND_CORE, NULL)) + command_event(CMD_EVENT_CHEATS_APPLY, NULL); +#endif } #endif @@ -16484,58 +16487,42 @@ static bool setting_append_list( menu_settings_list_current_add_range(list, list_info, 1, 10, 0.1, true, true); #ifdef HAVE_RUNAHEAD - CONFIG_BOOL( + CONFIG_UINT( list, list_info, - &settings->bools.run_ahead_enabled, - MENU_ENUM_LABEL_RUN_AHEAD_ENABLED, - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_ENABLED, - false, - MENU_ENUM_LABEL_VALUE_OFF, - MENU_ENUM_LABEL_VALUE_ON, + &menu_state_get_ptr()->runahead_mode, + MENU_ENUM_LABEL_RUNAHEAD_MODE, + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE, + MENU_RUNAHEAD_MODE_OFF, &group_info, &subgroup_info, parent_group, general_write_handler, - general_read_handler, - SD_FLAG_NONE - ); - (*list)[list_info->index - 1].change_handler = runahead_change_handler; - - CONFIG_UINT( - list, list_info, - &settings->uints.run_ahead_frames, - MENU_ENUM_LABEL_RUN_AHEAD_FRAMES, - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, - 1, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler); + general_read_handler); (*list)[list_info->index - 1].ui_type = ST_UI_TYPE_UINT_COMBOBOX; (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; - (*list)[list_info->index - 1].offset_by = 1; - (*list)[list_info->index - 1].change_handler = runahead_change_handler; - menu_settings_list_current_add_range(list, list_info, 1, MAX_RUNAHEAD_FRAMES, 1, true, true); + (*list)[list_info->index - 1].get_string_representation = + &setting_get_string_representation_runahead_mode; + (*list)[list_info->index - 1].change_handler = + runahead_change_handler; + menu_settings_list_current_add_range(list, list_info, + MENU_RUNAHEAD_MODE_OFF, MENU_RUNAHEAD_MODE_LAST - 1, 1, true, true); -#if defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB) - CONFIG_BOOL( + CONFIG_UINT( list, list_info, - &settings->bools.run_ahead_secondary_instance, - MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE, - MENU_ENUM_LABEL_VALUE_RUN_AHEAD_SECONDARY_INSTANCE, - DEFAULT_RUN_AHEAD_SECONDARY_INSTANCE, - MENU_ENUM_LABEL_VALUE_OFF, - MENU_ENUM_LABEL_VALUE_ON, + &settings->uints.run_ahead_frames, + MENU_ENUM_LABEL_RUN_AHEAD_FRAMES, + MENU_ENUM_LABEL_VALUE_RUN_AHEAD_FRAMES, + 1, &group_info, &subgroup_info, parent_group, general_write_handler, - general_read_handler, - SD_FLAG_NONE - ); + general_read_handler); + (*list)[list_info->index - 1].ui_type = ST_UI_TYPE_UINT_COMBOBOX; + (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; + (*list)[list_info->index - 1].offset_by = 1; (*list)[list_info->index - 1].change_handler = runahead_change_handler; -#endif + menu_settings_list_current_add_range(list, list_info, 1, MAX_RUNAHEAD_FRAMES, 1, true, true); CONFIG_BOOL( list, list_info, @@ -16553,22 +16540,6 @@ static bool setting_append_list( SD_FLAG_ADVANCED ); - CONFIG_BOOL( - list, list_info, - &settings->bools.preemptive_frames_enable, - MENU_ENUM_LABEL_PREEMPT_ENABLE, - MENU_ENUM_LABEL_VALUE_PREEMPT_ENABLE, - false, - MENU_ENUM_LABEL_VALUE_OFF, - MENU_ENUM_LABEL_VALUE_ON, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler, - SD_FLAG_NONE); - (*list)[list_info->index - 1].change_handler = preempt_change_handler; - CONFIG_UINT( list, list_info, &settings->uints.run_ahead_frames, @@ -16583,24 +16554,8 @@ static bool setting_append_list( (*list)[list_info->index - 1].ui_type = ST_UI_TYPE_UINT_COMBOBOX; (*list)[list_info->index - 1].action_ok = &setting_action_ok_uint; (*list)[list_info->index - 1].offset_by = 1; - (*list)[list_info->index - 1].change_handler = preempt_change_handler; + (*list)[list_info->index - 1].change_handler = runahead_change_handler; menu_settings_list_current_add_range(list, list_info, 1, MAX_RUNAHEAD_FRAMES, 1, true, true); - - CONFIG_BOOL( - list, list_info, - &settings->bools.preemptive_frames_hide_warnings, - MENU_ENUM_LABEL_PREEMPT_HIDE_WARNINGS, - MENU_ENUM_LABEL_VALUE_PREEMPT_HIDE_WARNINGS, - DEFAULT_PREEMPT_HIDE_WARNINGS, - MENU_ENUM_LABEL_VALUE_OFF, - MENU_ENUM_LABEL_VALUE_ON, - &group_info, - &subgroup_info, - parent_group, - general_write_handler, - general_read_handler, - SD_FLAG_ADVANCED - ); #endif #ifdef ANDROID diff --git a/msg_hash.h b/msg_hash.h index 521fae3e8b6..a72f0046fbb 100644 --- a/msg_hash.h +++ b/msg_hash.h @@ -831,6 +831,10 @@ enum msg_hash_enums MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_NORMAL, MENU_ENUM_LABEL_VALUE_INPUT_POLL_TYPE_BEHAVIOR_EARLY, + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_SINGLE_INSTANCE, + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_SECOND_INSTANCE, + MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE_PREEMPTIVE_FRAMES, + MENU_LABEL(CHEEVOS_UNLOCKED_ENTRY), MENU_LABEL(CHEEVOS_UNLOCKED_ENTRY_HARDCORE), MENU_LABEL(CHEEVOS_LOCKED_ENTRY), @@ -1353,6 +1357,10 @@ enum msg_hash_enums MENU_LABEL(INPUT_ICADE_ENABLE), MENU_LABEL(INPUT_ALL_USERS_CONTROL_MENU), MENU_LBL_H(INPUT_POLL_TYPE_BEHAVIOR), + MENU_LABEL(RUNAHEAD_MODE), +#if !(defined(HAVE_DYNAMIC) || defined(HAVE_DYLIB)) + MENU_ENUM_SUBLABEL_RUNAHEAD_MODE_NO_SECOND_INSTANCE, +#endif MENU_LABEL(INPUT_UNIFIED_MENU_CONTROLS), MENU_LABEL(INPUT_DISABLE_INFO_BUTTON), MENU_LABEL(INPUT_DISABLE_SEARCH_BUTTON), @@ -2764,14 +2772,9 @@ enum msg_hash_enums MENU_LABEL(SLOWMOTION_RATIO), MENU_LABEL(RUN_AHEAD_UNSUPPORTED), - MENU_LABEL(RUN_AHEAD_ENABLED), - MENU_LABEL(RUN_AHEAD_SECONDARY_INSTANCE), MENU_LABEL(RUN_AHEAD_HIDE_WARNINGS), MENU_LABEL(RUN_AHEAD_FRAMES), - MENU_LABEL(PREEMPT_UNSUPPORTED), - MENU_LABEL(PREEMPT_ENABLE), MENU_LABEL(PREEMPT_FRAMES), - MENU_LABEL(PREEMPT_HIDE_WARNINGS), MENU_LABEL(INPUT_BLOCK_TIMEOUT), MENU_LABEL(TURBO), diff --git a/retroarch.c b/retroarch.c index 60786bdcf16..d55580280e4 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3231,22 +3231,27 @@ bool command_event(enum event_command cmd, void *data) runloop_msg_queue_push(msg_hash_to_str(MSG_RUNAHEAD_DISABLED), 1, 100, false, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); + +#ifdef HAVE_MENU + /* Update menu */ + menu_update_runahead_mode(); +#endif } #endif break; case CMD_EVENT_PREEMPT_TOGGLE: #if HAVE_RUNAHEAD { - bool old_warn = settings->bools.preemptive_frames_hide_warnings; + bool old_warn = settings->bools.run_ahead_hide_warnings; bool old_inited = runloop_st->preempt_data != NULL; /* Toggle with warnings shown */ - settings->bools.preemptive_frames_hide_warnings = false; - settings->bools.preemptive_frames_enable = + settings->bools.run_ahead_hide_warnings = false; + settings->bools.preemptive_frames_enable = !(settings->bools.preemptive_frames_enable); command_event(CMD_EVENT_PREEMPT_UPDATE, NULL); - settings->bools.preemptive_frames_hide_warnings = old_warn; + settings->bools.run_ahead_hide_warnings = old_warn; if (old_inited && !runloop_st->preempt_data) runloop_msg_queue_push(msg_hash_to_str(MSG_PREEMPT_DISABLED), @@ -3256,7 +3261,7 @@ bool command_event(enum event_command cmd, void *data) { char msg[128]; snprintf(msg, sizeof(msg), msg_hash_to_str(MSG_PREEMPT_ENABLED), - settings->uints.run_ahead_frames); + settings->uints.run_ahead_frames); runloop_msg_queue_push( msg, 1, 100, false, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); @@ -3266,11 +3271,20 @@ bool command_event(enum event_command cmd, void *data) } else /* Failed to init */ settings->bools.preemptive_frames_enable = false; + +#ifdef HAVE_MENU + /* Update menu */ + menu_update_runahead_mode(); +#endif } #endif break; case CMD_EVENT_PREEMPT_UPDATE: #if HAVE_RUNAHEAD +#ifdef HAVE_NETWORKING + if (netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL)) + break; +#endif preempt_deinit(runloop_st); preempt_init(runloop_st); #endif @@ -7772,6 +7786,9 @@ bool retroarch_main_init(int argc, char *argv[]) #endif #ifdef HAVE_RUNAHEAD +#ifdef HAVE_MENU + menu_update_runahead_mode(); +#endif #ifdef HAVE_NETWORKING if (!netplay_driver_ctl(RARCH_NETPLAY_CTL_IS_ENABLED, NULL)) #endif diff --git a/runahead.c b/runahead.c index 2f2b63d343d..8221fd1346e 100644 --- a/runahead.c +++ b/runahead.c @@ -1473,7 +1473,7 @@ bool preempt_init(void *data) error: preempt_deinit(runloop_st); - if (!settings->bools.preemptive_frames_hide_warnings) + if (!settings->bools.run_ahead_hide_warnings) runloop_msg_queue_push( failed_str, 0, 2 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); @@ -1683,7 +1683,7 @@ void preempt_run(preempt_t *preempt, void *data) video_st->flags |= VIDEO_FLAG_ACTIVE; preempt_deinit(runloop_st); - if (!settings->bools.preemptive_frames_hide_warnings) + if (!settings->bools.run_ahead_hide_warnings) runloop_msg_queue_push( failed_str, 0, 2 * 60, true, NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO); diff --git a/ui/drivers/qt/qt_options.cpp b/ui/drivers/qt/qt_options.cpp index 0a876ed119a..0cab967ffcc 100644 --- a/ui/drivers/qt/qt_options.cpp +++ b/ui/drivers/qt/qt_options.cpp @@ -387,10 +387,10 @@ QWidget *LatencyPage::widget() { QWidget *widget = new QWidget; FormLayout *layout = new FormLayout; - CheckableSettingsGroup *runAheadGroup = new CheckableSettingsGroup(MENU_ENUM_LABEL_RUN_AHEAD_ENABLED); - CheckableSettingsGroup *preemptGroup = new CheckableSettingsGroup(MENU_ENUM_LABEL_PREEMPT_ENABLE); + SettingsGroup *runAheadGroup = new SettingsGroup( + msg_hash_to_str(MENU_ENUM_LABEL_VALUE_RUNAHEAD_MODE)); - rarch_setting_t *hardSyncSetting = menu_setting_find_enum(MENU_ENUM_LABEL_VIDEO_HARD_SYNC); + rarch_setting_t *hardSyncSetting = menu_setting_find_enum(MENU_ENUM_LABEL_VIDEO_HARD_SYNC); if (hardSyncSetting) { @@ -409,15 +409,11 @@ QWidget *LatencyPage::widget() layout->add(menu_setting_find_enum(MENU_ENUM_LABEL_AUDIO_LATENCY)); layout->add(menu_setting_find_enum(MENU_ENUM_LABEL_INPUT_POLL_TYPE_BEHAVIOR)); - runAheadGroup->add(menu_setting_find_enum(MENU_ENUM_LABEL_RUN_AHEAD_FRAMES)); - runAheadGroup->add(menu_setting_find_enum(MENU_ENUM_LABEL_RUN_AHEAD_SECONDARY_INSTANCE)); - runAheadGroup->add(menu_setting_find_enum(MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS)); + runAheadGroup->add(MENU_ENUM_LABEL_RUNAHEAD_MODE); + runAheadGroup->add(MENU_ENUM_LABEL_RUN_AHEAD_FRAMES); + runAheadGroup->add(MENU_ENUM_LABEL_RUN_AHEAD_HIDE_WARNINGS); layout->addRow(runAheadGroup); - preemptGroup->add(menu_setting_find_enum(MENU_ENUM_LABEL_PREEMPT_FRAMES)); - preemptGroup->add(menu_setting_find_enum(MENU_ENUM_LABEL_PREEMPT_HIDE_WARNINGS)); - layout->addRow(preemptGroup); - widget->setLayout(layout); return widget;