Browse Source

[desktop, settings] new RendererHacks category, move to Extensions -> Extras, fix GPU accuracy naming (#3245)

added a new RendererHacks category, moved them to the Extensions tab and
renamed that tab Extras. Should fit in smaller screens now

also Performance -> Fast, GPU Accuracy -> GPU Mode

Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3245
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
pull/3247/head
crueter 1 month ago
parent
commit
73f2535edc
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 1
      src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt
  2. 11
      src/android/app/src/main/res/values/strings.xml
  3. 1
      src/common/settings.cpp
  4. 8
      src/common/settings.h
  5. 1
      src/common/settings_common.h
  6. 2
      src/frontend_common/config.cpp
  7. 8
      src/qt_common/config/shared_translation.cpp
  8. 2
      src/qt_common/config/shared_translation.h
  9. 2
      src/qt_common/config/uisettings.h
  10. 2
      src/yuzu/configuration/configure_dialog.cpp
  11. 16
      src/yuzu/configuration/configure_graphics_advanced.cpp
  12. 39
      src/yuzu/configuration/configure_graphics_advanced.ui
  13. 23
      src/yuzu/configuration/configure_graphics_extensions.cpp
  14. 45
      src/yuzu/configuration/configure_graphics_extensions.ui
  15. 2
      src/yuzu/configuration/configure_per_game.cpp
  16. 2
      src/yuzu/main_window.cpp
  17. 28
      tools/find-unused-strings.sh

1
src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt

@ -306,6 +306,7 @@ abstract class SettingsItem(
SingleChoiceSetting( SingleChoiceSetting(
IntSetting.RENDERER_ACCURACY, IntSetting.RENDERER_ACCURACY,
titleId = R.string.renderer_accuracy, titleId = R.string.renderer_accuracy,
descriptionId = R.string.renderer_accuracy_description,
choicesId = R.array.rendererAccuracyNames, choicesId = R.array.rendererAccuracyNames,
valuesId = R.array.rendererAccuracyValues valuesId = R.array.rendererAccuracyValues
) )

11
src/android/app/src/main/res/values/strings.xml

@ -473,7 +473,8 @@
<string name="advanced">Advanced</string> <string name="advanced">Advanced</string>
<string name="renderer_accuracy">Accuracy level</string>
<string name="renderer_accuracy">GPU Mode</string>
<string name="renderer_accuracy_description">Controls the GPU emulation mode. Most games render fine with Fast or Balanced modes, but Accurate is still required for some. Particles tend to only render correctly with Accurate mode.</string>
<string name="dma_accuracy">DMA Accuracy</string> <string name="dma_accuracy">DMA Accuracy</string>
<string name="dma_accuracy_description">Controls the DMA precision accuracy. Safe precision can fix issues in some games, but it can also impact performance in some cases. If unsure, leave this on Default.</string> <string name="dma_accuracy_description">Controls the DMA precision accuracy. Safe precision can fix issues in some games, but it can also impact performance in some cases. If unsure, leave this on Default.</string>
<string name="anisotropic_filtering">Anisotropic filtering</string> <string name="anisotropic_filtering">Anisotropic filtering</string>
@ -721,18 +722,12 @@
<!-- Custom Paths settings --> <!-- Custom Paths settings -->
<string name="custom_save_directory">Save Data Directory</string> <string name="custom_save_directory">Save Data Directory</string>
<string name="custom_save_directory_description">Set a custom path for save data storage</string> <string name="custom_save_directory_description">Set a custom path for save data storage</string>
<string name="select_directory">Select Directory</string>
<string name="choose_save_directory_action">Choose an action for the save directory:</string>
<string name="set_custom_path">Set Custom Path</string>
<string name="reset_to_nand">Reset to Default</string> <string name="reset_to_nand">Reset to Default</string>
<string name="migrate_save_data">Migrate Save Data</string> <string name="migrate_save_data">Migrate Save Data</string>
<string name="migrate_save_data_question">Do you want to migrate existing save data to the new location?</string> <string name="migrate_save_data_question">Do you want to migrate existing save data to the new location?</string>
<string name="migrate_save_data_description">This will copy your save files from the old location to the new one.</string>
<string name="migrating_save_data">Migrating save data…</string>
<string name="save_migration_complete">Save data migrated successfully</string> <string name="save_migration_complete">Save data migrated successfully</string>
<string name="save_migration_failed">Save data migration failed</string> <string name="save_migration_failed">Save data migration failed</string>
<string name="save_directory_set">Save directory set</string> <string name="save_directory_set">Save directory set</string>
<string name="save_directory_reset">Save directory reset to default</string>
<string name="destination_has_saves">The destination already contains data. Do you want to overwrite it?</string> <string name="destination_has_saves">The destination already contains data. Do you want to overwrite it?</string>
<string name="all_files_permission_required">All Files Access permission is required for custom paths</string> <string name="all_files_permission_required">All Files Access permission is required for custom paths</string>
<string name="grant_permission">Grant Permission</string> <string name="grant_permission">Grant Permission</string>
@ -970,7 +965,7 @@
<string name="renderer_none">None</string> <string name="renderer_none">None</string>
<!-- Renderer Accuracy --> <!-- Renderer Accuracy -->
<string name="renderer_accuracy_low">Performance</string>
<string name="renderer_accuracy_low">Fast</string>
<string name="renderer_accuracy_medium">Balanced</string> <string name="renderer_accuracy_medium">Balanced</string>
<string name="renderer_accuracy_high">Accurate</string> <string name="renderer_accuracy_high">Accurate</string>

1
src/common/settings.cpp

@ -231,6 +231,7 @@ const char* TranslateCategory(Category category) {
return "Overlay"; return "Overlay";
case Category::Renderer: case Category::Renderer:
case Category::RendererAdvanced: case Category::RendererAdvanced:
case Category::RendererHacks:
case Category::RendererDebug: case Category::RendererDebug:
case Category::RendererExtensions: case Category::RendererExtensions:
return "Renderer"; return "Renderer";

8
src/common/settings.h

@ -492,13 +492,13 @@ struct Values {
SwitchableSetting<GpuOverclock> fast_gpu_time{linkage, SwitchableSetting<GpuOverclock> fast_gpu_time{linkage,
GpuOverclock::Medium, GpuOverclock::Medium,
"fast_gpu_time", "fast_gpu_time",
Category::RendererAdvanced,
Category::RendererHacks,
Specialization::Default}; Specialization::Default};
SwitchableSetting<bool> skip_cpu_inner_invalidation{linkage, SwitchableSetting<bool> skip_cpu_inner_invalidation{linkage,
false, false,
"skip_cpu_inner_invalidation", "skip_cpu_inner_invalidation",
Category::RendererAdvanced,
Category::RendererHacks,
Specialization::Default, Specialization::Default,
true, true,
true}; true};
@ -508,10 +508,10 @@ struct Values {
#else #else
false, false,
#endif #endif
"async_presentation", Category::RendererAdvanced};
"async_presentation", Category::RendererHacks};
SwitchableSetting<bool> use_asynchronous_shaders{linkage, false, "use_asynchronous_shaders", SwitchableSetting<bool> use_asynchronous_shaders{linkage, false, "use_asynchronous_shaders",
Category::RendererAdvanced};
Category::RendererHacks};
SwitchableSetting<ExtendedDynamicState> dyna_state{linkage, SwitchableSetting<ExtendedDynamicState> dyna_state{linkage,
#if defined (_WIN32) #if defined (_WIN32)

1
src/common/settings_common.h

@ -24,6 +24,7 @@ enum class Category : u32 {
Overlay, Overlay,
Renderer, Renderer,
RendererAdvanced, RendererAdvanced,
RendererHacks,
RendererExtensions, RendererExtensions,
RendererDebug, RendererDebug,
System, System,

2
src/frontend_common/config.cpp

@ -368,6 +368,7 @@ void Config::ReadRendererValues() {
ReadCategory(Settings::Category::Renderer); ReadCategory(Settings::Category::Renderer);
ReadCategory(Settings::Category::RendererAdvanced); ReadCategory(Settings::Category::RendererAdvanced);
ReadCategory(Settings::Category::RendererHacks);
ReadCategory(Settings::Category::RendererExtensions); ReadCategory(Settings::Category::RendererExtensions);
ReadCategory(Settings::Category::RendererDebug); ReadCategory(Settings::Category::RendererDebug);
@ -671,6 +672,7 @@ void Config::SaveRendererValues() {
WriteCategory(Settings::Category::Renderer); WriteCategory(Settings::Category::Renderer);
WriteCategory(Settings::Category::RendererAdvanced); WriteCategory(Settings::Category::RendererAdvanced);
WriteCategory(Settings::Category::RendererHacks);
WriteCategory(Settings::Category::RendererExtensions); WriteCategory(Settings::Category::RendererExtensions);
WriteCategory(Settings::Category::RendererDebug); WriteCategory(Settings::Category::RendererDebug);

8
src/qt_common/config/shared_translation.cpp

@ -272,8 +272,8 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QObject* parent)
tr("Controls the quality of texture rendering at oblique angles.\nSafe to set at 16x on most GPUs.")); tr("Controls the quality of texture rendering at oblique angles.\nSafe to set at 16x on most GPUs."));
INSERT(Settings, INSERT(Settings,
gpu_accuracy, gpu_accuracy,
tr("GPU Accuracy:"),
tr("Controls the GPU emulation accuracy.\nMost games render fine with Performance or Balanced modes, but Accurate is still "
tr("GPU Mode:"),
tr("Controls the GPU emulation mode.\nMost games render fine with Fast or Balanced modes, but Accurate is still "
"required for some.\nParticles tend to only render correctly with Accurate mode.")); "required for some.\nParticles tend to only render correctly with Accurate mode."));
INSERT(Settings, INSERT(Settings,
dma_accuracy, dma_accuracy,
@ -321,7 +321,7 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QObject* parent)
// Renderer (Extensions) // Renderer (Extensions)
INSERT(Settings, dyna_state, tr("Extended Dynamic State"), INSERT(Settings, dyna_state, tr("Extended Dynamic State"),
tr("Controls the number of features that can be used in Extended Dynamic State.\n" tr("Controls the number of features that can be used in Extended Dynamic State.\n"
"Higher numbers allow for more features and can increase performance, but may cause "
"Higher states allow for more features and can increase performance, but may cause "
"additional graphical issues.")); "additional graphical issues."));
INSERT(Settings, INSERT(Settings,
@ -499,7 +499,7 @@ std::unique_ptr<ComboboxTranslationMap> ComboboxEnumeration(QObject* parent)
}}); }});
translations->insert({Settings::EnumMetadata<Settings::GpuAccuracy>::Index(), translations->insert({Settings::EnumMetadata<Settings::GpuAccuracy>::Index(),
{ {
PAIR(GpuAccuracy, Low, tr("Performance")),
PAIR(GpuAccuracy, Low, tr("Fast")),
PAIR(GpuAccuracy, Medium, tr("Balanced")), PAIR(GpuAccuracy, Medium, tr("Balanced")),
PAIR(GpuAccuracy, High, tr("Accurate")), PAIR(GpuAccuracy, High, tr("Accurate")),
}}); }});

2
src/qt_common/config/shared_translation.h

@ -61,7 +61,7 @@ static const std::map<Settings::ConsoleMode, QString> use_docked_mode_texts_map
}; };
static const std::map<Settings::GpuAccuracy, QString> gpu_accuracy_texts_map = { static const std::map<Settings::GpuAccuracy, QString> gpu_accuracy_texts_map = {
{Settings::GpuAccuracy::Low, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Performance"))},
{Settings::GpuAccuracy::Low, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Fast"))},
{Settings::GpuAccuracy::Medium, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Balanced"))}, {Settings::GpuAccuracy::Medium, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Balanced"))},
{Settings::GpuAccuracy::High, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Accurate"))}, {Settings::GpuAccuracy::High, QStringLiteral(QT_TRANSLATE_NOOP("MainWindow", "Accurate"))},
}; };

2
src/qt_common/config/uisettings.h

@ -253,7 +253,7 @@ const std::array<Shortcut, 30> default_hotkeys{{
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Capture Screenshot")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+P"), std::string("Screenshot"), Qt::WidgetWithChildrenShortcut, false}}, {QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Capture Screenshot")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+P"), std::string("Screenshot"), Qt::WidgetWithChildrenShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Change Adapting Filter")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("F8"), std::string("Home+L"), Qt::ApplicationShortcut, false}}, {QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Change Adapting Filter")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("F8"), std::string("Home+L"), Qt::ApplicationShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Change Docked Mode")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("F10"), std::string("Home+X"), Qt::ApplicationShortcut, false}}, {QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Change Docked Mode")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("F10"), std::string("Home+X"), Qt::ApplicationShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Change GPU Accuracy")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("F9"), std::string("Home+R"), Qt::ApplicationShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Change GPU Mode")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("F9"), std::string("Home+R"), Qt::ApplicationShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Configure")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+,"), std::string(""), Qt::WidgetWithChildrenShortcut, false}}, {QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Configure")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+,"), std::string(""), Qt::WidgetWithChildrenShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Configure Current Game")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+."), std::string(""), Qt::WidgetWithChildrenShortcut, false}}, {QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Configure Current Game")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("Ctrl+."), std::string(""), Qt::WidgetWithChildrenShortcut, false}},
{QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Continue/Pause Emulation")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("F4"), std::string("Home+Plus"), Qt::WindowShortcut, false}}, {QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Continue/Pause Emulation")).toStdString(), QStringLiteral(QT_TRANSLATE_NOOP("Hotkeys", "Main Window")).toStdString(), {std::string("F4"), std::string("Home+Plus"), Qt::WindowShortcut, false}},

2
src/yuzu/configuration/configure_dialog.cpp

@ -74,7 +74,7 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry_,
ui->tabWidget->addTab(general_tab.get(), tr("General")); ui->tabWidget->addTab(general_tab.get(), tr("General"));
ui->tabWidget->addTab(graphics_tab.get(), tr("Graphics")); ui->tabWidget->addTab(graphics_tab.get(), tr("Graphics"));
ui->tabWidget->addTab(graphics_advanced_tab.get(), tr("GraphicsAdvanced")); ui->tabWidget->addTab(graphics_advanced_tab.get(), tr("GraphicsAdvanced"));
ui->tabWidget->addTab(graphics_extensions_tab.get(), tr("GraphicsExtensions"));
ui->tabWidget->addTab(graphics_extensions_tab.get(), tr("GraphicsExtra"));
ui->tabWidget->addTab(hotkeys_tab.get(), tr("Hotkeys")); ui->tabWidget->addTab(hotkeys_tab.get(), tr("Hotkeys"));
ui->tabWidget->addTab(input_tab.get(), tr("Controls")); ui->tabWidget->addTab(input_tab.get(), tr("Controls"));
ui->tabWidget->addTab(profile_tab.get(), tr("Profiles")); ui->tabWidget->addTab(profile_tab.get(), tr("Profiles"));

16
src/yuzu/configuration/configure_graphics_advanced.cpp

@ -35,17 +35,9 @@ void ConfigureGraphicsAdvanced::SetConfiguration() {}
void ConfigureGraphicsAdvanced::Setup(const ConfigurationShared::Builder& builder) { void ConfigureGraphicsAdvanced::Setup(const ConfigurationShared::Builder& builder) {
auto& normal_layout = *ui->normal_target->layout(); auto& normal_layout = *ui->normal_target->layout();
auto& hacks_layout = *ui->hacks_target->layout();
// A map will sort the data for us // A map will sort the data for us
std::map<u32, QWidget*> normal_hold{}; std::map<u32, QWidget*> normal_hold{};
std::map<u32, QWidget*> hacks_hold{};
// These options are hacks and should probably be changed with caution.
// TODO(crueter) maybe make a separate category RendererHacks?
QList<u32> hacks = {
Settings::values.skip_cpu_inner_invalidation.Id(), Settings::values.async_presentation.Id(),
Settings::values.use_asynchronous_shaders.Id(), Settings::values.fast_gpu_time.Id()};
for (auto setting : for (auto setting :
Settings::values.linkage.by_category[Settings::Category::RendererAdvanced]) { Settings::values.linkage.by_category[Settings::Category::RendererAdvanced]) {
@ -61,11 +53,7 @@ void ConfigureGraphicsAdvanced::Setup(const ConfigurationShared::Builder& builde
const auto id = setting->Id(); const auto id = setting->Id();
if (hacks.contains(id)) {
hacks_hold.emplace(id, widget);
} else {
normal_hold.emplace(id, widget); normal_hold.emplace(id, widget);
}
// Keep track of enable_compute_pipelines so we can display it when needed // Keep track of enable_compute_pipelines so we can display it when needed
if (setting->Id() == Settings::values.enable_compute_pipelines.Id()) { if (setting->Id() == Settings::values.enable_compute_pipelines.Id()) {
@ -76,10 +64,6 @@ void ConfigureGraphicsAdvanced::Setup(const ConfigurationShared::Builder& builde
for (const auto& [id, widget] : normal_hold) { for (const auto& [id, widget] : normal_hold) {
normal_layout.addWidget(widget); normal_layout.addWidget(widget);
} }
for (const auto& [id, widget] : hacks_hold) {
hacks_layout.addWidget(widget);
}
} }
void ConfigureGraphicsAdvanced::ApplyConfiguration() { void ConfigureGraphicsAdvanced::ApplyConfiguration() {

39
src/yuzu/configuration/configure_graphics_advanced.ui

@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>404</width>
<width>465</width>
<height>376</height> <height>376</height>
</rect> </rect>
</property> </property>
@ -44,43 +44,6 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="hacks">
<property name="title">
<string>Hacks</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Changing these options from their default may cause issues. Novitii cavete!</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="hacks_target" native="true">
<layout class="QVBoxLayout" name="verticalLayout_7">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item> <item>
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">

23
src/yuzu/configuration/configure_graphics_extensions.cpp

@ -35,6 +35,7 @@ void ConfigureGraphicsExtensions::SetConfiguration() {}
void ConfigureGraphicsExtensions::Setup(const ConfigurationShared::Builder& builder) { void ConfigureGraphicsExtensions::Setup(const ConfigurationShared::Builder& builder) {
auto& layout = *ui->populate_target->layout(); auto& layout = *ui->populate_target->layout();
std::map<u32, QWidget*> hold{}; // A map will sort the data for us std::map<u32, QWidget*> hold{}; // A map will sort the data for us
for (auto setting : for (auto setting :
@ -71,6 +72,28 @@ void ConfigureGraphicsExtensions::Setup(const ConfigurationShared::Builder& buil
for (const auto& [id, widget] : hold) { for (const auto& [id, widget] : hold) {
layout.addWidget(widget); layout.addWidget(widget);
} }
auto& hacks = *ui->hacks_target->layout();
std::map<u32, QWidget*> hacks_hold{}; // A map will sort the data for us
for (auto setting : Settings::values.linkage.by_category[Settings::Category::RendererHacks]) {
auto* widget = builder.BuildWidget(setting, apply_funcs);
if (widget == nullptr) {
continue;
}
if (!widget->Valid()) {
widget->deleteLater();
continue;
}
hacks_hold.emplace(setting->Id(), widget);
}
for (const auto& [id, widget] : hacks_hold) {
hacks.addWidget(widget);
}
} }
void ConfigureGraphicsExtensions::ApplyConfiguration() { void ConfigureGraphicsExtensions::ApplyConfiguration() {

45
src/yuzu/configuration/configure_graphics_extensions.ui

@ -6,7 +6,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>404</width>
<width>465</width>
<height>376</height> <height>376</height>
</rect> </rect>
</property> </property>
@ -14,15 +14,52 @@
<string>Form</string> <string>Form</string>
</property> </property>
<property name="accessibleName"> <property name="accessibleName">
<string>Extensions</string>
<string>Extras</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_1">
<layout class="QVBoxLayout" name="verticalLayout_4">
<item>
<widget class="QGroupBox" name="hacks">
<property name="title">
<string>Hacks</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Changing these options from their default may cause issues. Novitii cavete!</string>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="hacks_target" native="true">
<layout class="QVBoxLayout" name="verticalLayout_7">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item> <item>
<layout class="QVBoxLayout" name="verticalLayout_2"> <layout class="QVBoxLayout" name="verticalLayout_2">
<item> <item>
<widget class="QGroupBox" name="groupBox_1"> <widget class="QGroupBox" name="groupBox_1">
<property name="title"> <property name="title">
<string>Vulkan Extensions Settings</string>
<string>Vulkan Extensions</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout_3"> <layout class="QVBoxLayout" name="verticalLayout_3">
<item> <item>

2
src/yuzu/configuration/configure_per_game.cpp

@ -77,7 +77,7 @@ ConfigurePerGame::ConfigurePerGame(QWidget* parent, u64 title_id_, const std::st
ui->tabWidget->addTab(cpu_tab.get(), tr("CPU")); ui->tabWidget->addTab(cpu_tab.get(), tr("CPU"));
ui->tabWidget->addTab(graphics_tab.get(), tr("Graphics")); ui->tabWidget->addTab(graphics_tab.get(), tr("Graphics"));
ui->tabWidget->addTab(graphics_advanced_tab.get(), tr("Adv. Graphics")); ui->tabWidget->addTab(graphics_advanced_tab.get(), tr("Adv. Graphics"));
ui->tabWidget->addTab(graphics_extensions_tab.get(), tr("GPU Extensions"));
ui->tabWidget->addTab(graphics_extensions_tab.get(), tr("Ext. Graphics"));
ui->tabWidget->addTab(audio_tab.get(), tr("Audio")); ui->tabWidget->addTab(audio_tab.get(), tr("Audio"));
ui->tabWidget->addTab(input_tab.get(), tr("Input Profiles")); ui->tabWidget->addTab(input_tab.get(), tr("Input Profiles"));
ui->tabWidget->addTab(network_tab.get(), tr("Network")); ui->tabWidget->addTab(network_tab.get(), tr("Network"));

2
src/yuzu/main_window.cpp

@ -1421,7 +1421,7 @@ void MainWindow::InitializeHotkeys() {
connect_shortcut(QStringLiteral("Change Adapting Filter"), connect_shortcut(QStringLiteral("Change Adapting Filter"),
&MainWindow::OnToggleAdaptingFilter); &MainWindow::OnToggleAdaptingFilter);
connect_shortcut(QStringLiteral("Change Docked Mode"), &MainWindow::OnToggleDockedMode); connect_shortcut(QStringLiteral("Change Docked Mode"), &MainWindow::OnToggleDockedMode);
connect_shortcut(QStringLiteral("Change GPU Accuracy"), &MainWindow::OnToggleGpuAccuracy);
connect_shortcut(QStringLiteral("Change GPU Mode"), &MainWindow::OnToggleGpuAccuracy);
connect_shortcut(QStringLiteral("Audio Mute/Unmute"), &MainWindow::OnMute); connect_shortcut(QStringLiteral("Audio Mute/Unmute"), &MainWindow::OnMute);
connect_shortcut(QStringLiteral("Audio Volume Down"), &MainWindow::OnDecreaseVolume); connect_shortcut(QStringLiteral("Audio Volume Down"), &MainWindow::OnDecreaseVolume);
connect_shortcut(QStringLiteral("Audio Volume Up"), &MainWindow::OnIncreaseVolume); connect_shortcut(QStringLiteral("Audio Volume Up"), &MainWindow::OnIncreaseVolume);

28
tools/find-unused-strings.sh

@ -1,28 +0,0 @@
#!/bin/sh -e
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later
# TODO: rewrite this to get a list of every string used in $ANDROID
# then search strings.xml
#
ANDROID=src/android/app/src/main
STRINGS=$ANDROID/res/values/strings.xml
SRC=$(mktemp)
# We start out by getting the list of source strings...
grep -e "string name" $STRINGS | cut -d'"' -f2 > "$SRC"
# ... then search for each string as R.string. or @string/
while IFS= read -r str; do
grep -qre "R.string.$str\|@string/$str" "$ANDROID" && continue
echo "-- Removing unused string $str"
sed "/string name=\"$str\"/d" "$STRINGS" > "$STRINGS.new"
mv "$STRINGS.new" "$STRINGS"
done < "$SRC"
rm -rf "$TMP_DIR"
tools/stale-translations.sh
Loading…
Cancel
Save