diff --git a/src/duckstation-qt/gpusettingswidget.cpp b/src/duckstation-qt/gpusettingswidget.cpp index a071eb327..56b3e4fdb 100644 --- a/src/duckstation-qt/gpusettingswidget.cpp +++ b/src/duckstation-qt/gpusettingswidget.cpp @@ -1,9 +1,10 @@ #include "gpusettingswidget.h" #include "core/gpu.h" #include "core/settings.h" +#include "settingsdialog.h" #include "settingwidgetbinder.h" -GPUSettingsWidget::GPUSettingsWidget(QtHostInterface* host_interface, QWidget* parent /* = nullptr */) +GPUSettingsWidget::GPUSettingsWidget(QtHostInterface* host_interface, QWidget* parent, SettingsDialog* dialog) : QWidget(parent), m_host_interface(host_interface) { m_ui.setupUi(this); @@ -31,6 +32,60 @@ GPUSettingsWidget::GPUSettingsWidget(QtHostInterface* host_interface, QWidget* p &GPUSettingsWidget::updateScaledDitheringEnabled); connect(m_ui.trueColor, &QCheckBox::stateChanged, this, &GPUSettingsWidget::updateScaledDitheringEnabled); updateScaledDitheringEnabled(); + + dialog->registerWidgetHelp( + m_ui.renderer, "Renderer", Settings::GetRendererDisplayName(Settings::DEFAULT_GPU_RENDERER), + "Chooses the backend to use for rendering tasks for the the console GPU. Depending on your system and hardware, " + "Direct3D 11 and OpenGL hardware backends may be available. The software renderer offers the best compatibility, " + "but is the slowest and does not offer any enhancements."); + dialog->registerWidgetHelp(m_ui.useDebugDevice, "Use Debug Device", "Unchecked", + "Enables the usage of debug devices and shaders for rendering APIs which support them. " + "Should only be used when debugging the emulator."); + dialog->registerWidgetHelp(m_ui.displayAspectRatio, "Aspect Ratio", "4:3", + "Changes the pixel aspect ratio which is used to display the console's output to the " + "screen. The default is 4:3 which matches a typical TV of the era."); + dialog->registerWidgetHelp(m_ui.displayCropMode, "Crop Mode", "Only Overscan Area", + "Determines how much of the area typically not visible on a consumer TV set to crop/hide. " + "Some games display content in the overscan area, or use it for screen effects and may " + "not display correctly with the All Borders setting. Only Overscan offers a good " + "compromise between stability and hiding black borders."); + dialog->registerWidgetHelp(m_ui.disableInterlacing, "Disable Interlacing (force progressive render/scan)", "Checked", + "Forces the display of frames to progressive mode. This only affects the displayed image, " + "the console will be unaware of the setting. If the game is internally producing " + "interlaced frames, this option may not have any effect. Usually safe to enable."); + dialog->registerWidgetHelp( + m_ui.displayLinearFiltering, "Linear Upscaling", "Checked", + "Uses bilinear texture filtering when displaying the console's framebuffer to the screen. Disabling filtering will " + "producer a sharper, blockier/pixelated image. Enabling will smooth out the image. The option will be less " + "noticable the higher the resolution scale."); + dialog->registerWidgetHelp(m_ui.vsync, "VSync", "Checked", + "Enables synchronization with the host display when possible. Enabling this option will " + "provide better frame pacing and smoother motion with fewer duplicated frames. VSync is " + "automatically disabled when it is not possible (e.g. running at non-100% speed)."); + dialog->registerWidgetHelp(m_ui.resolutionScale, "Resolution Scale", "1x", + "Enables the upscaling of 3D objects rendered to the console's framebuffer. Only applies " + "to the hardware backends. This option is usually safe, with most games looking fine at " + "higher resolutions. Higher resolutions require a more powerful GPU."); + dialog->registerWidgetHelp( + m_ui.trueColor, "True Color Rendering (24-bit, disables dithering)", "Checked", + "Forces the precision of colours output to the console's framebuffer to use the full 8 bits of precision per " + "channel. This produces nicer looking gradients at the cost of making some colours look slightly different. " + "Disabling the option also enables dithering, which makes the transition between colours less sharp by applying a " + "pattern around those pixels. Usually safe to leave enabled, and only applies to the hardware renderers."); + dialog->registerWidgetHelp( + m_ui.scaledDithering, "Scaled Dithering (scale dither pattern to resolution)", "Checked", + "Scales the dither pattern to the resolution scale of the emulated GPU. This makes the dither pattern much less " + "obvious at higher resolutions. Usually safe to enable, and only supported by the hardware renderers."); + dialog->registerWidgetHelp( + m_ui.forceNTSCTimings, "Force NTSC Timings (60hz-on-PAL)", "Unchecked", + "Uses NTSC frame timings when the console is in PAL mode, forcing PAL games to run at 60hz. For most games which " + "have a speed tied to the framerate, this will result in the game running approximately 17% faster. For variable " + "frame rate games, it may not affect the framerate."); + dialog->registerWidgetHelp( + m_ui.linearTextureFiltering, "Bilinear Texture Filtering", "Unchecked", + "Smooths out the blockyness of magnified textures on 3D object by using bilinear " + "filtering. Will have a greater effect on higher resolution scales. Currently this option " + "produces artifacts around objects in many games and needs further work. Only applies to the hardware renderers."); } GPUSettingsWidget::~GPUSettingsWidget() = default; diff --git a/src/duckstation-qt/gpusettingswidget.h b/src/duckstation-qt/gpusettingswidget.h index 89e8f1e30..5c474e23e 100644 --- a/src/duckstation-qt/gpusettingswidget.h +++ b/src/duckstation-qt/gpusettingswidget.h @@ -5,13 +5,14 @@ #include "ui_gpusettingswidget.h" class QtHostInterface; +class SettingsDialog; class GPUSettingsWidget : public QWidget { Q_OBJECT public: - GPUSettingsWidget(QtHostInterface* host_interface, QWidget* parent = nullptr); + GPUSettingsWidget(QtHostInterface* host_interface, QWidget* parent, SettingsDialog* dialog); ~GPUSettingsWidget(); private Q_SLOTS: diff --git a/src/duckstation-qt/settingsdialog.cpp b/src/duckstation-qt/settingsdialog.cpp index 7b7fed434..684a87a32 100644 --- a/src/duckstation-qt/settingsdialog.cpp +++ b/src/duckstation-qt/settingsdialog.cpp @@ -47,7 +47,7 @@ SettingsDialog::SettingsDialog(QtHostInterface* host_interface, QWidget* parent m_game_list_settings = new GameListSettingsWidget(host_interface, m_ui.settingsContainer); m_hotkey_settings = new HotkeySettingsWidget(host_interface, m_ui.settingsContainer); m_port_settings = new PortSettingsWidget(host_interface, m_ui.settingsContainer); - m_gpu_settings = new GPUSettingsWidget(host_interface, m_ui.settingsContainer); + m_gpu_settings = new GPUSettingsWidget(host_interface, m_ui.settingsContainer, this); m_audio_settings = new AudioSettingsWidget(host_interface, m_ui.settingsContainer); m_advanced_settings = new AdvancedSettingsWidget(host_interface, m_ui.settingsContainer, this);