mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-10 17:27:46 +00:00
Compare commits
16 Commits
5bdac2f287
...
4c833ebbee
Author | SHA1 | Date | |
---|---|---|---|
![]() |
4c833ebbee | ||
![]() |
5eb61024c6 | ||
![]() |
a27b845514 | ||
![]() |
1b1ca019a4 | ||
![]() |
241834709b | ||
![]() |
185b080f03 | ||
![]() |
903eafcf65 | ||
![]() |
2a7e8a4003 | ||
![]() |
5ec5db9240 | ||
![]() |
974c56d3c5 | ||
![]() |
ae26b38fc0 | ||
![]() |
2de9122b5f | ||
![]() |
a6a5e201b6 | ||
![]() |
e7f22515d3 | ||
![]() |
ec29d120b5 | ||
![]() |
d48e6e25ad |
5
Data/Sys/GameSettings/GD7.ini
Normal file
5
Data/Sys/GameSettings/GD7.ini
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# GD7JB2, GD7E70, GD7PB2 - Dragon Ball Z: Budokai
|
||||||
|
|
||||||
|
[Video_Hacks]
|
||||||
|
# Frame pacing
|
||||||
|
ImmediateXFBEnable = False
|
5
Data/Sys/GameSettings/GZ3.ini
Normal file
5
Data/Sys/GameSettings/GZ3.ini
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# GZ3E70, GZ3PB2 - Dragon Ball Z: Budokai 2
|
||||||
|
|
||||||
|
[Video_Hacks]
|
||||||
|
# Frame pacing
|
||||||
|
ImmediateXFBEnable = False
|
@ -45,6 +45,7 @@ const Info<bool> MAIN_ACCURATE_CPU_CACHE{{System::Main, "Core", "AccurateCPUCach
|
|||||||
const Info<bool> MAIN_DSP_HLE{{System::Main, "Core", "DSPHLE"}, true};
|
const Info<bool> MAIN_DSP_HLE{{System::Main, "Core", "DSPHLE"}, true};
|
||||||
const Info<int> MAIN_MAX_FALLBACK{{System::Main, "Core", "MaxFallback"}, 100};
|
const Info<int> MAIN_MAX_FALLBACK{{System::Main, "Core", "MaxFallback"}, 100};
|
||||||
const Info<int> MAIN_TIMING_VARIANCE{{System::Main, "Core", "TimingVariance"}, 40};
|
const Info<int> MAIN_TIMING_VARIANCE{{System::Main, "Core", "TimingVariance"}, 40};
|
||||||
|
const Info<bool> MAIN_CORRECT_TIME_DRIFT{{System::Main, "Core", "CorrectTimeDrift"}, false};
|
||||||
const Info<bool> MAIN_CPU_THREAD{{System::Main, "Core", "CPUThread"}, true};
|
const Info<bool> MAIN_CPU_THREAD{{System::Main, "Core", "CPUThread"}, true};
|
||||||
const Info<bool> MAIN_SYNC_ON_SKIP_IDLE{{System::Main, "Core", "SyncOnSkipIdle"}, true};
|
const Info<bool> MAIN_SYNC_ON_SKIP_IDLE{{System::Main, "Core", "SyncOnSkipIdle"}, true};
|
||||||
const Info<std::string> MAIN_DEFAULT_ISO{{System::Main, "Core", "DefaultISO"}, ""};
|
const Info<std::string> MAIN_DEFAULT_ISO{{System::Main, "Core", "DefaultISO"}, ""};
|
||||||
|
@ -63,6 +63,7 @@ extern const Info<bool> MAIN_ACCURATE_CPU_CACHE;
|
|||||||
extern const Info<bool> MAIN_DSP_HLE;
|
extern const Info<bool> MAIN_DSP_HLE;
|
||||||
extern const Info<int> MAIN_MAX_FALLBACK;
|
extern const Info<int> MAIN_MAX_FALLBACK;
|
||||||
extern const Info<int> MAIN_TIMING_VARIANCE;
|
extern const Info<int> MAIN_TIMING_VARIANCE;
|
||||||
|
extern const Info<bool> MAIN_CORRECT_TIME_DRIFT;
|
||||||
extern const Info<bool> MAIN_CPU_THREAD;
|
extern const Info<bool> MAIN_CPU_THREAD;
|
||||||
extern const Info<bool> MAIN_SYNC_ON_SKIP_IDLE;
|
extern const Info<bool> MAIN_SYNC_ON_SKIP_IDLE;
|
||||||
extern const Info<std::string> MAIN_DEFAULT_ISO;
|
extern const Info<std::string> MAIN_DEFAULT_ISO;
|
||||||
|
@ -105,10 +105,20 @@ void CoreTimingManager::Init()
|
|||||||
|
|
||||||
m_last_oc_factor = m_config_oc_factor;
|
m_last_oc_factor = m_config_oc_factor;
|
||||||
m_globals.last_OC_factor_inverted = m_config_oc_inv_factor;
|
m_globals.last_OC_factor_inverted = m_config_oc_inv_factor;
|
||||||
|
|
||||||
|
m_on_state_changed_handle = Core::AddOnStateChangedCallback([this](Core::State state) {
|
||||||
|
if (state == Core::State::Running)
|
||||||
|
{
|
||||||
|
// We don't want Throttle to attempt catch-up for all the time lost while paused.
|
||||||
|
ResetThrottle(GetTicks());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void CoreTimingManager::Shutdown()
|
void CoreTimingManager::Shutdown()
|
||||||
{
|
{
|
||||||
|
Core::RemoveOnStateChangedCallback(&m_on_state_changed_handle);
|
||||||
|
|
||||||
std::lock_guard lk(m_ts_write_lock);
|
std::lock_guard lk(m_ts_write_lock);
|
||||||
MoveEvents();
|
MoveEvents();
|
||||||
ClearPendingEvents();
|
ClearPendingEvents();
|
||||||
@ -131,6 +141,8 @@ void CoreTimingManager::RefreshConfig()
|
|||||||
|
|
||||||
m_max_variance = std::chrono::duration_cast<DT>(DT_ms(Config::Get(Config::MAIN_TIMING_VARIANCE)));
|
m_max_variance = std::chrono::duration_cast<DT>(DT_ms(Config::Get(Config::MAIN_TIMING_VARIANCE)));
|
||||||
|
|
||||||
|
m_correct_time_drift = Config::Get(Config::MAIN_CORRECT_TIME_DRIFT);
|
||||||
|
|
||||||
if (AchievementManager::GetInstance().IsHardcoreModeActive() &&
|
if (AchievementManager::GetInstance().IsHardcoreModeActive() &&
|
||||||
Config::Get(Config::MAIN_EMULATION_SPEED) < 1.0f &&
|
Config::Get(Config::MAIN_EMULATION_SPEED) < 1.0f &&
|
||||||
Config::Get(Config::MAIN_EMULATION_SPEED) > 0.0f)
|
Config::Get(Config::MAIN_EMULATION_SPEED) > 0.0f)
|
||||||
@ -428,7 +440,9 @@ void CoreTimingManager::Throttle(const s64 target_cycle)
|
|||||||
const TimePoint time = Clock::now();
|
const TimePoint time = Clock::now();
|
||||||
|
|
||||||
const TimePoint min_target = time - m_max_fallback;
|
const TimePoint min_target = time - m_max_fallback;
|
||||||
if (target_time < min_target)
|
|
||||||
|
// "Correct Time Drift" setting prevents timing relaxing.
|
||||||
|
if (!m_correct_time_drift && target_time < min_target)
|
||||||
{
|
{
|
||||||
// Core is running too slow.. i.e. CPU bottleneck.
|
// Core is running too slow.. i.e. CPU bottleneck.
|
||||||
const DT adjustment = min_target - target_time;
|
const DT adjustment = min_target - target_time;
|
||||||
|
@ -211,6 +211,7 @@ private:
|
|||||||
|
|
||||||
DT m_max_fallback = {};
|
DT m_max_fallback = {};
|
||||||
DT m_max_variance = {};
|
DT m_max_variance = {};
|
||||||
|
bool m_correct_time_drift = false;
|
||||||
double m_emulation_speed = 1.0;
|
double m_emulation_speed = 1.0;
|
||||||
|
|
||||||
bool IsSpeedUnlimited() const;
|
bool IsSpeedUnlimited() const;
|
||||||
@ -225,6 +226,8 @@ private:
|
|||||||
std::atomic_bool m_use_precision_timer = false;
|
std::atomic_bool m_use_precision_timer = false;
|
||||||
Common::PrecisionTimer m_precision_cpu_timer;
|
Common::PrecisionTimer m_precision_cpu_timer;
|
||||||
Common::PrecisionTimer m_precision_gpu_timer;
|
Common::PrecisionTimer m_precision_gpu_timer;
|
||||||
|
|
||||||
|
int m_on_state_changed_handle;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace CoreTiming
|
} // namespace CoreTiming
|
||||||
|
@ -78,8 +78,8 @@ std::string USBHost::GetDeviceNameFromVIDPID(u16 vid, u16 pid)
|
|||||||
libusb_get_string_descriptor_ascii(handle, desc.iProduct, buffer, sizeof(buffer)) > 0)
|
libusb_get_string_descriptor_ascii(handle, desc.iProduct, buffer, sizeof(buffer)) > 0)
|
||||||
{
|
{
|
||||||
device_name = reinterpret_cast<char*>(buffer);
|
device_name = reinterpret_cast<char*>(buffer);
|
||||||
libusb_close(handle);
|
|
||||||
}
|
}
|
||||||
|
libusb_close(handle);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent)
|
AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("About Dolphin"));
|
setWindowTitle(tr("About Dolphin"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
QString branch_str = QString::fromStdString(Common::GetScmBranchStr());
|
QString branch_str = QString::fromStdString(Common::GetScmBranchStr());
|
||||||
const int commits_ahead = Common::GetScmCommitsAheadMaster();
|
const int commits_ahead = Common::GetScmCommitsAheadMaster();
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
AchievementsWindow::AchievementsWindow(QWidget* parent) : QDialog(parent)
|
AchievementsWindow::AchievementsWindow(QWidget* parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Achievements"));
|
setWindowTitle(tr("Achievements"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
CreateMainLayout();
|
CreateMainLayout();
|
||||||
ConnectWidgets();
|
ConnectWidgets();
|
||||||
|
@ -26,7 +26,6 @@ CheatsManager::CheatsManager(Core::System& system, QWidget* parent)
|
|||||||
: QDialog(parent), m_system(system)
|
: QDialog(parent), m_system(system)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Cheats Manager"));
|
setWindowTitle(tr("Cheats Manager"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
connect(&Settings::Instance(), &Settings::EmulationStateChanged, this,
|
connect(&Settings::Instance(), &Settings::EmulationStateChanged, this,
|
||||||
&CheatsManager::OnStateChanged);
|
&CheatsManager::OnStateChanged);
|
||||||
|
@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
CheatCodeEditor::CheatCodeEditor(QWidget* parent) : QDialog(parent)
|
CheatCodeEditor::CheatCodeEditor(QWidget* parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowTitle(tr("Cheat Code Editor"));
|
setWindowTitle(tr("Cheat Code Editor"));
|
||||||
|
|
||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
|
@ -80,6 +80,36 @@ void ConfigSlider::OnConfigChanged()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigSliderU32::ConfigSliderU32(u32 minimum, u32 maximum, const Config::Info<u32>& setting,
|
||||||
|
u32 scale)
|
||||||
|
: ConfigSliderU32(minimum, maximum, setting, nullptr, scale)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigSliderU32::ConfigSliderU32(u32 minimum, u32 maximum, const Config::Info<u32>& setting,
|
||||||
|
Config::Layer* layer, u32 scale)
|
||||||
|
: ConfigControl(Qt::Horizontal, setting.GetLocation(), layer), m_setting(setting),
|
||||||
|
m_scale(scale)
|
||||||
|
|
||||||
|
{
|
||||||
|
setMinimum(minimum);
|
||||||
|
setMaximum(maximum);
|
||||||
|
setValue(ReadValue(setting));
|
||||||
|
OnConfigChanged();
|
||||||
|
|
||||||
|
connect(this, &ConfigSliderU32::valueChanged, this, &ConfigSliderU32::Update);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigSliderU32::Update(u32 value)
|
||||||
|
{
|
||||||
|
SaveValue(m_setting, value * m_scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigSliderU32::OnConfigChanged()
|
||||||
|
{
|
||||||
|
setValue(ReadValue(m_setting) / m_scale);
|
||||||
|
}
|
||||||
|
|
||||||
ConfigSliderLabel::ConfigSliderLabel(const QString& text, ConfigSlider* slider)
|
ConfigSliderLabel::ConfigSliderLabel(const QString& text, ConfigSlider* slider)
|
||||||
: QLabel(text), m_slider(QPointer<ConfigSlider>(slider))
|
: QLabel(text), m_slider(QPointer<ConfigSlider>(slider))
|
||||||
{
|
{
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include "DolphinQt/Config/ConfigControls/ConfigControl.h"
|
#include "DolphinQt/Config/ConfigControls/ConfigControl.h"
|
||||||
#include "DolphinQt/Config/ToolTipControls/ToolTipSlider.h"
|
#include "DolphinQt/Config/ToolTipControls/ToolTipSlider.h"
|
||||||
|
|
||||||
|
#include "Common/CommonTypes.h"
|
||||||
#include "Common/Config/ConfigInfo.h"
|
#include "Common/Config/ConfigInfo.h"
|
||||||
|
|
||||||
class ConfigSlider final : public ConfigControl<ToolTipSlider>
|
class ConfigSlider final : public ConfigControl<ToolTipSlider>
|
||||||
@ -38,6 +39,25 @@ private:
|
|||||||
std::vector<int> m_tick_values;
|
std::vector<int> m_tick_values;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ConfigSliderU32 final : public ConfigControl<ToolTipSlider>
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
ConfigSliderU32(u32 minimum, u32 maximum, const Config::Info<u32>& setting, u32 scale = 1);
|
||||||
|
ConfigSliderU32(u32 minimum, u32 maximum, const Config::Info<u32>& setting, Config ::Layer* layer,
|
||||||
|
u32 scale = 1);
|
||||||
|
|
||||||
|
void Update(u32 value);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void OnConfigChanged() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
const Config::Info<u32> m_setting;
|
||||||
|
|
||||||
|
u32 m_scale = 1;
|
||||||
|
};
|
||||||
|
|
||||||
class ConfigSliderLabel final : public QLabel
|
class ConfigSliderLabel final : public QLabel
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -17,7 +17,6 @@ ControllerInterfaceWindow::ControllerInterfaceWindow(QWidget* parent) : QDialog(
|
|||||||
CreateMainLayout();
|
CreateMainLayout();
|
||||||
|
|
||||||
setWindowTitle(tr("Alternate Input Sources"));
|
setWindowTitle(tr("Alternate Input Sources"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ControllerInterfaceWindow::CreateMainLayout()
|
void ControllerInterfaceWindow::CreateMainLayout()
|
||||||
|
@ -29,7 +29,6 @@ DualShockUDPClientAddServerDialog::DualShockUDPClientAddServerDialog(QWidget* pa
|
|||||||
void DualShockUDPClientAddServerDialog::CreateWidgets()
|
void DualShockUDPClientAddServerDialog::CreateWidgets()
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Add New DSU Server"));
|
setWindowTitle(tr("Add New DSU Server"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
m_main_layout = new QGridLayout;
|
m_main_layout = new QGridLayout;
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@ FreeLookWindow::FreeLookWindow(QWidget* parent) : QDialog(parent)
|
|||||||
ConnectWidgets();
|
ConnectWidgets();
|
||||||
|
|
||||||
setWindowTitle(tr("Free Look Settings"));
|
setWindowTitle(tr("Free Look Settings"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FreeLookWindow::CreateMainLayout()
|
void FreeLookWindow::CreateMainLayout()
|
||||||
|
@ -22,7 +22,6 @@
|
|||||||
ColorCorrectionConfigWindow::ColorCorrectionConfigWindow(QWidget* parent) : QDialog(parent)
|
ColorCorrectionConfigWindow::ColorCorrectionConfigWindow(QWidget* parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Color Correction Configuration"));
|
setWindowTitle(tr("Color Correction Configuration"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
Create();
|
Create();
|
||||||
ConnectWidgets();
|
ConnectWidgets();
|
||||||
|
@ -28,7 +28,6 @@ GraphicsWindow::GraphicsWindow(MainWindow* parent) : QDialog(parent), m_main_win
|
|||||||
CreateMainLayout();
|
CreateMainLayout();
|
||||||
|
|
||||||
setWindowTitle(tr("Graphics"));
|
setWindowTitle(tr("Graphics"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
OnBackendChanged(QString::fromStdString(Config::Get(Config::MAIN_GFX_BACKEND)));
|
OnBackendChanged(QString::fromStdString(Config::Get(Config::MAIN_GFX_BACKEND)));
|
||||||
|
|
||||||
|
@ -42,7 +42,6 @@ PostProcessingConfigWindow::PostProcessingConfigWindow(EnhancementsWidget* paren
|
|||||||
}
|
}
|
||||||
|
|
||||||
setWindowTitle(tr("Post-Processing Shader Configuration"));
|
setWindowTitle(tr("Post-Processing Shader Configuration"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
PopulateGroups();
|
PopulateGroups();
|
||||||
Create();
|
Create();
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
GCPadWiiUConfigDialog::GCPadWiiUConfigDialog(int port, QWidget* parent)
|
GCPadWiiUConfigDialog::GCPadWiiUConfigDialog(int port, QWidget* parent)
|
||||||
: QDialog(parent), m_port{port}
|
: QDialog(parent), m_port{port}
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
CreateLayout();
|
CreateLayout();
|
||||||
|
|
||||||
LoadSettings();
|
LoadSettings();
|
||||||
|
@ -268,7 +268,6 @@ IOWindow::IOWindow(MappingWindow* window, ControllerEmu::EmulatedController* con
|
|||||||
connect(&Settings::Instance(), &Settings::ConfigChanged, this, &IOWindow::ConfigChanged);
|
connect(&Settings::Instance(), &Settings::ConfigChanged, this, &IOWindow::ConfigChanged);
|
||||||
|
|
||||||
setWindowTitle(type == IOWindow::Type::Input ? tr("Configure Input") : tr("Configure Output"));
|
setWindowTitle(type == IOWindow::Type::Input ? tr("Configure Input") : tr("Configure Output"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
ConfigChanged();
|
ConfigChanged();
|
||||||
|
|
||||||
|
@ -65,7 +65,6 @@ MappingWindow::MappingWindow(QWidget* parent, Type type, int port_num)
|
|||||||
: QDialog(parent), m_port(port_num)
|
: QDialog(parent), m_port(port_num)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Port %1").arg(port_num + 1));
|
setWindowTitle(tr("Port %1").arg(port_num + 1));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
CreateDevicesLayout();
|
CreateDevicesLayout();
|
||||||
CreateProfilesLayout();
|
CreateProfilesLayout();
|
||||||
|
@ -38,7 +38,6 @@ NewPatchDialog::NewPatchDialog(QWidget* parent, PatchEngine::Patch& patch)
|
|||||||
: QDialog(parent), m_patch(patch)
|
: QDialog(parent), m_patch(patch)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Patch Editor"));
|
setWindowTitle(tr("Patch Editor"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
ConnectWidgets();
|
ConnectWidgets();
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
#include "UICommon/GameFile.h"
|
#include "UICommon/GameFile.h"
|
||||||
|
|
||||||
PropertiesDialog::PropertiesDialog(QWidget* parent, const UICommon::GameFile& game)
|
PropertiesDialog::PropertiesDialog(QWidget* parent, const UICommon::GameFile& game)
|
||||||
: StackedSettingsWindow{parent}
|
: StackedSettingsWindow{parent}, m_filepath(game.GetFilePath())
|
||||||
{
|
{
|
||||||
setWindowTitle(QStringLiteral("%1: %2 - %3")
|
setWindowTitle(QStringLiteral("%1: %2 - %3")
|
||||||
.arg(QString::fromStdString(game.GetFileName()),
|
.arg(QString::fromStdString(game.GetFileName()),
|
||||||
|
@ -17,6 +17,7 @@ class PropertiesDialog final : public StackedSettingsWindow
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit PropertiesDialog(QWidget* parent, const UICommon::GameFile& game);
|
explicit PropertiesDialog(QWidget* parent, const UICommon::GameFile& game);
|
||||||
|
const std::string& GetFilePath() const { return m_filepath; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void OpenGeneralSettings();
|
void OpenGeneralSettings();
|
||||||
@ -24,4 +25,7 @@ signals:
|
|||||||
#ifdef USE_RETRO_ACHIEVEMENTS
|
#ifdef USE_RETRO_ACHIEVEMENTS
|
||||||
void OpenAchievementSettings();
|
void OpenAchievementSettings();
|
||||||
#endif // USE_RETRO_ACHIEVEMENTS
|
#endif // USE_RETRO_ACHIEVEMENTS
|
||||||
|
|
||||||
|
private:
|
||||||
|
const std::string m_filepath;
|
||||||
};
|
};
|
||||||
|
@ -24,8 +24,6 @@
|
|||||||
|
|
||||||
StackedSettingsWindow::StackedSettingsWindow(QWidget* parent) : QDialog{parent}
|
StackedSettingsWindow::StackedSettingsWindow(QWidget* parent) : QDialog{parent}
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
// This eliminates the ugly line between the title bar and window contents with KDE Plasma.
|
// This eliminates the ugly line between the title bar and window contents with KDE Plasma.
|
||||||
setStyleSheet(QStringLiteral("QDialog { border: none; }"));
|
setStyleSheet(QStringLiteral("QDialog { border: none; }"));
|
||||||
|
|
||||||
|
@ -42,7 +42,6 @@ ConvertDialog::ConvertDialog(QList<std::shared_ptr<const UICommon::GameFile>> fi
|
|||||||
ASSERT(!m_files.empty());
|
ASSERT(!m_files.empty());
|
||||||
|
|
||||||
setWindowTitle(tr("Convert"));
|
setWindowTitle(tr("Convert"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
QGridLayout* grid_layout = new QGridLayout;
|
QGridLayout* grid_layout = new QGridLayout;
|
||||||
grid_layout->setColumnStretch(1, 1);
|
grid_layout->setColumnStretch(1, 1);
|
||||||
|
@ -41,7 +41,6 @@ QString HtmlFormatErrorLine(const Common::GekkoAssembler::AssemblerError& err)
|
|||||||
AssembleInstructionDialog::AssembleInstructionDialog(QWidget* parent, u32 address, u32 value)
|
AssembleInstructionDialog::AssembleInstructionDialog(QWidget* parent, u32 address, u32 value)
|
||||||
: QDialog(parent), m_code(value), m_address(address)
|
: QDialog(parent), m_code(value), m_address(address)
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowModality(Qt::WindowModal);
|
setWindowModality(Qt::WindowModal);
|
||||||
setWindowTitle(tr("Instruction"));
|
setWindowTitle(tr("Instruction"));
|
||||||
|
|
||||||
|
@ -200,7 +200,7 @@ BranchWatchDialog::BranchWatchDialog(Core::System& system, Core::BranchWatch& br
|
|||||||
: QDialog(parent), m_system(system), m_branch_watch(branch_watch), m_code_widget(code_widget)
|
: QDialog(parent), m_system(system), m_branch_watch(branch_watch), m_code_widget(code_widget)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Branch Watch Tool"));
|
setWindowTitle(tr("Branch Watch Tool"));
|
||||||
setWindowFlags((windowFlags() | Qt::WindowMinMaxButtonsHint) & ~Qt::WindowContextHelpButtonHint);
|
setWindowFlags(windowFlags() | Qt::WindowMinMaxButtonsHint);
|
||||||
|
|
||||||
// Branch Watch Table
|
// Branch Watch Table
|
||||||
m_table_view = new QTableView(nullptr);
|
m_table_view = new QTableView(nullptr);
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
BreakpointDialog::BreakpointDialog(BreakpointWidget* parent)
|
BreakpointDialog::BreakpointDialog(BreakpointWidget* parent)
|
||||||
: QDialog(parent), m_parent(parent), m_open_mode(OpenMode::New)
|
: QDialog(parent), m_parent(parent), m_open_mode(OpenMode::New)
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowTitle(tr("New Breakpoint"));
|
setWindowTitle(tr("New Breakpoint"));
|
||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
ConnectWidgets();
|
ConnectWidgets();
|
||||||
@ -36,7 +35,6 @@ BreakpointDialog::BreakpointDialog(BreakpointWidget* parent)
|
|||||||
BreakpointDialog::BreakpointDialog(BreakpointWidget* parent, const TBreakPoint* breakpoint)
|
BreakpointDialog::BreakpointDialog(BreakpointWidget* parent, const TBreakPoint* breakpoint)
|
||||||
: QDialog(parent), m_parent(parent), m_open_mode(OpenMode::EditBreakPoint)
|
: QDialog(parent), m_parent(parent), m_open_mode(OpenMode::EditBreakPoint)
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowTitle(tr("Edit Breakpoint"));
|
setWindowTitle(tr("Edit Breakpoint"));
|
||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
ConnectWidgets();
|
ConnectWidgets();
|
||||||
@ -56,7 +54,6 @@ BreakpointDialog::BreakpointDialog(BreakpointWidget* parent, const TBreakPoint*
|
|||||||
BreakpointDialog::BreakpointDialog(BreakpointWidget* parent, const TMemCheck* memcheck)
|
BreakpointDialog::BreakpointDialog(BreakpointWidget* parent, const TMemCheck* memcheck)
|
||||||
: QDialog(parent), m_parent(parent), m_open_mode(OpenMode::EditMemCheck)
|
: QDialog(parent), m_parent(parent), m_open_mode(OpenMode::EditMemCheck)
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowTitle(tr("Edit Breakpoint"));
|
setWindowTitle(tr("Edit Breakpoint"));
|
||||||
|
|
||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
PatchInstructionDialog::PatchInstructionDialog(QWidget* parent, u32 address, u32 value)
|
PatchInstructionDialog::PatchInstructionDialog(QWidget* parent, u32 address, u32 value)
|
||||||
: QDialog(parent), m_address(address)
|
: QDialog(parent), m_address(address)
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowModality(Qt::WindowModal);
|
setWindowModality(Qt::WindowModal);
|
||||||
setWindowTitle(tr("Instruction"));
|
setWindowTitle(tr("Instruction"));
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ DiscordJoinRequestDialog::DiscordJoinRequestDialog(QWidget* parent, const std::s
|
|||||||
: QDialog(parent), m_user_id(id), m_close_timestamp(std::time(nullptr) + s_max_lifetime_seconds)
|
: QDialog(parent), m_user_id(id), m_close_timestamp(std::time(nullptr) + s_max_lifetime_seconds)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Request to Join Your Party"));
|
setWindowTitle(tr("Request to Join Your Party"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
QPixmap avatar_pixmap;
|
QPixmap avatar_pixmap;
|
||||||
|
|
||||||
|
@ -59,10 +59,18 @@ FIFOPlayerWindow::FIFOPlayerWindow(FifoPlayer& fifo_player, FifoRecorder& fifo_r
|
|||||||
});
|
});
|
||||||
|
|
||||||
connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, [this](Core::State state) {
|
connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, [this](Core::State state) {
|
||||||
|
// We don't want to trigger OnEmulationStarted when going from Paused to Running,
|
||||||
|
// and nothing in UpdateControls treats Paused and Running differently
|
||||||
|
if (state == Core::State::Paused)
|
||||||
|
state = Core::State::Running;
|
||||||
|
|
||||||
|
// Skip redundant updates
|
||||||
if (state == m_emu_state)
|
if (state == m_emu_state)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (state == Core::State::Running && m_emu_state != Core::State::Paused)
|
UpdateControls();
|
||||||
|
|
||||||
|
if (state == Core::State::Running)
|
||||||
OnEmulationStarted();
|
OnEmulationStarted();
|
||||||
else if (state == Core::State::Uninitialized)
|
else if (state == Core::State::Uninitialized)
|
||||||
OnEmulationStopped();
|
OnEmulationStopped();
|
||||||
@ -266,8 +274,6 @@ void FIFOPlayerWindow::StopRecording()
|
|||||||
|
|
||||||
void FIFOPlayerWindow::OnEmulationStarted()
|
void FIFOPlayerWindow::OnEmulationStarted()
|
||||||
{
|
{
|
||||||
UpdateControls();
|
|
||||||
|
|
||||||
if (m_fifo_player.GetFile())
|
if (m_fifo_player.GetFile())
|
||||||
OnFIFOLoaded();
|
OnFIFOLoaded();
|
||||||
}
|
}
|
||||||
@ -278,7 +284,6 @@ void FIFOPlayerWindow::OnEmulationStopped()
|
|||||||
if (m_fifo_recorder.IsRecording())
|
if (m_fifo_recorder.IsRecording())
|
||||||
StopRecording();
|
StopRecording();
|
||||||
|
|
||||||
UpdateControls();
|
|
||||||
// When emulation stops, switch away from the analyzer tab, as it no longer shows anything useful
|
// When emulation stops, switch away from the analyzer tab, as it no longer shows anything useful
|
||||||
m_tab_widget->setCurrentWidget(m_main_widget);
|
m_tab_widget->setCurrentWidget(m_main_widget);
|
||||||
m_analyzer->Update();
|
m_analyzer->Update();
|
||||||
|
@ -60,7 +60,6 @@ GCMemcardCreateNewDialog::GCMemcardCreateNewDialog(QWidget* parent) : QDialog(pa
|
|||||||
});
|
});
|
||||||
|
|
||||||
setWindowTitle(tr("Create New Memory Card"));
|
setWindowTitle(tr("Create New Memory Card"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GCMemcardCreateNewDialog::~GCMemcardCreateNewDialog() = default;
|
GCMemcardCreateNewDialog::~GCMemcardCreateNewDialog() = default;
|
||||||
|
@ -98,7 +98,6 @@ GCMemcardManager::GCMemcardManager(QWidget* parent) : QDialog(parent)
|
|||||||
resize(650, 500);
|
resize(650, 500);
|
||||||
|
|
||||||
setWindowTitle(tr("GameCube Memory Card Manager"));
|
setWindowTitle(tr("GameCube Memory Card Manager"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GCMemcardManager::~GCMemcardManager() = default;
|
GCMemcardManager::~GCMemcardManager() = default;
|
||||||
|
@ -566,6 +566,15 @@ void GameList::OpenProperties()
|
|||||||
if (!game)
|
if (!game)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
auto property_windows = this->findChildren<PropertiesDialog*>();
|
||||||
|
auto it =
|
||||||
|
std::ranges::find(property_windows, game->GetFilePath(), &PropertiesDialog::GetFilePath);
|
||||||
|
if (it != property_windows.end())
|
||||||
|
{
|
||||||
|
(*it)->raise();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
PropertiesDialog* properties = new PropertiesDialog(this, *game);
|
PropertiesDialog* properties = new PropertiesDialog(this, *game);
|
||||||
|
|
||||||
connect(properties, &PropertiesDialog::OpenGeneralSettings, this, &GameList::OpenGeneralSettings);
|
connect(properties, &PropertiesDialog::OpenGeneralSettings, this, &GameList::OpenGeneralSettings);
|
||||||
|
@ -27,7 +27,6 @@ NANDRepairDialog::NANDRepairDialog(const WiiUtils::NANDCheckResult& result, QWid
|
|||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("NAND Check"));
|
setWindowTitle(tr("NAND Check"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowIcon(Resources::GetAppIcon());
|
setWindowIcon(Resources::GetAppIcon());
|
||||||
|
|
||||||
QVBoxLayout* main_layout = new QVBoxLayout();
|
QVBoxLayout* main_layout = new QVBoxLayout();
|
||||||
|
@ -30,7 +30,6 @@ bool NKitWarningDialog::ShowUnlessDisabled(QWidget* parent)
|
|||||||
NKitWarningDialog::NKitWarningDialog(QWidget* parent) : QDialog(parent)
|
NKitWarningDialog::NKitWarningDialog(QWidget* parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("NKit Warning"));
|
setWindowTitle(tr("NKit Warning"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowIcon(Resources::GetAppIcon());
|
setWindowIcon(Resources::GetAppIcon());
|
||||||
|
|
||||||
QVBoxLayout* main_layout = new QVBoxLayout;
|
QVBoxLayout* main_layout = new QVBoxLayout;
|
||||||
|
@ -45,7 +45,6 @@ ChunkedProgressDialog::ChunkedProgressDialog(QWidget* parent) : QDialog(parent)
|
|||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
ConnectWidgets();
|
ConnectWidgets();
|
||||||
setWindowTitle(tr("Data Transfer"));
|
setWindowTitle(tr("Data Transfer"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ChunkedProgressDialog::CreateWidgets()
|
void ChunkedProgressDialog::CreateWidgets()
|
||||||
|
@ -14,7 +14,6 @@
|
|||||||
GameListDialog::GameListDialog(const GameListModel& game_list_model, QWidget* parent)
|
GameListDialog::GameListDialog(const GameListModel& game_list_model, QWidget* parent)
|
||||||
: QDialog(parent), m_game_list_model(game_list_model)
|
: QDialog(parent), m_game_list_model(game_list_model)
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowTitle(tr("Select a game"));
|
setWindowTitle(tr("Select a game"));
|
||||||
|
|
||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
|
@ -32,7 +32,6 @@
|
|||||||
NetPlayBrowser::NetPlayBrowser(QWidget* parent) : QDialog(parent)
|
NetPlayBrowser::NetPlayBrowser(QWidget* parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("NetPlay Session Browser"));
|
setWindowTitle(tr("NetPlay Session Browser"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
RestoreSettings();
|
RestoreSettings();
|
||||||
@ -297,7 +296,6 @@ void NetPlayBrowser::accept()
|
|||||||
{
|
{
|
||||||
QInputDialog dialog(this);
|
QInputDialog dialog(this);
|
||||||
|
|
||||||
dialog.setWindowFlags(dialog.windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
dialog.setWindowTitle(tr("Enter password"));
|
dialog.setWindowTitle(tr("Enter password"));
|
||||||
dialog.setLabelText(tr("This session requires a password:"));
|
dialog.setLabelText(tr("This session requires a password:"));
|
||||||
dialog.setWindowModality(Qt::WindowModal);
|
dialog.setWindowModality(Qt::WindowModal);
|
||||||
|
@ -97,8 +97,6 @@ NetPlayDialog::NetPlayDialog(const GameListModel& game_list_model,
|
|||||||
: QDialog(parent), m_game_list_model(game_list_model),
|
: QDialog(parent), m_game_list_model(game_list_model),
|
||||||
m_start_game_callback(std::move(start_game_callback))
|
m_start_game_callback(std::move(start_game_callback))
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
setWindowTitle(tr("NetPlay"));
|
setWindowTitle(tr("NetPlay"));
|
||||||
setWindowIcon(Resources::GetAppIcon());
|
setWindowIcon(Resources::GetAppIcon());
|
||||||
|
|
||||||
|
@ -32,7 +32,6 @@ NetPlaySetupDialog::NetPlaySetupDialog(const GameListModel& game_list_model, QWi
|
|||||||
: QDialog(parent), m_game_list_model(game_list_model)
|
: QDialog(parent), m_game_list_model(game_list_model)
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("NetPlay Setup"));
|
setWindowTitle(tr("NetPlay Setup"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
CreateMainLayout();
|
CreateMainLayout();
|
||||||
|
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
PadMappingDialog::PadMappingDialog(QWidget* parent) : QDialog(parent)
|
PadMappingDialog::PadMappingDialog(QWidget* parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowTitle(tr("Assign Controllers"));
|
setWindowTitle(tr("Assign Controllers"));
|
||||||
|
|
||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
|
@ -26,7 +26,6 @@ public:
|
|||||||
ParallelProgressDialog(Args&&... args) : m_dialog{std::forward<Args>(args)...}
|
ParallelProgressDialog(Args&&... args) : m_dialog{std::forward<Args>(args)...}
|
||||||
{
|
{
|
||||||
setParent(m_dialog.parent());
|
setParent(m_dialog.parent());
|
||||||
m_dialog.setWindowFlags(m_dialog.windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
ConnectSignalsAndSlots();
|
ConnectSignalsAndSlots();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@ ResourcePackManager::ResourcePackManager(QWidget* widget) : QDialog(widget)
|
|||||||
RepopulateTable();
|
RepopulateTable();
|
||||||
|
|
||||||
setWindowTitle(tr("Resource Pack Manager"));
|
setWindowTitle(tr("Resource Pack Manager"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
resize(QSize(900, 600));
|
resize(QSize(900, 600));
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,6 @@ RiivolutionBootWidget::RiivolutionBootWidget(std::string game_id, std::optional<
|
|||||||
m_base_game_path(std::move(base_game_path))
|
m_base_game_path(std::move(base_game_path))
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Start with Riivolution Patches"));
|
setWindowTitle(tr("Start with Riivolution Patches"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
CreateWidgets();
|
CreateWidgets();
|
||||||
ConnectWidgets();
|
ConnectWidgets();
|
||||||
|
@ -12,7 +12,6 @@
|
|||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QRadioButton>
|
#include <QRadioButton>
|
||||||
#include <QSignalBlocker>
|
#include <QSignalBlocker>
|
||||||
#include <QSlider>
|
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
@ -25,6 +24,8 @@
|
|||||||
#include "Core/System.h"
|
#include "Core/System.h"
|
||||||
|
|
||||||
#include "DolphinQt/Config/ConfigControls/ConfigBool.h"
|
#include "DolphinQt/Config/ConfigControls/ConfigBool.h"
|
||||||
|
#include "DolphinQt/Config/ConfigControls/ConfigFloatSlider.h"
|
||||||
|
#include "DolphinQt/Config/ConfigControls/ConfigSlider.h"
|
||||||
#include "DolphinQt/QtUtils/QtUtils.h"
|
#include "DolphinQt/QtUtils/QtUtils.h"
|
||||||
#include "DolphinQt/QtUtils/SignalBlocking.h"
|
#include "DolphinQt/QtUtils/SignalBlocking.h"
|
||||||
#include "DolphinQt/Settings.h"
|
#include "DolphinQt/Settings.h"
|
||||||
@ -89,6 +90,18 @@ void AdvancedPane::CreateLayout()
|
|||||||
"needed.<br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"));
|
"needed.<br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"));
|
||||||
cpu_options_group_layout->addWidget(m_accurate_cpu_cache_checkbox);
|
cpu_options_group_layout->addWidget(m_accurate_cpu_cache_checkbox);
|
||||||
|
|
||||||
|
auto* const timing_group = new QGroupBox(tr("Timing"));
|
||||||
|
main_layout->addWidget(timing_group);
|
||||||
|
auto* timing_group_layout = new QVBoxLayout{timing_group};
|
||||||
|
auto* const correct_time_drift =
|
||||||
|
new ConfigBool{tr("Correct Time Drift"), Config::MAIN_CORRECT_TIME_DRIFT};
|
||||||
|
correct_time_drift->SetDescription(
|
||||||
|
tr("Allow the emulated console to run fast after stutters,"
|
||||||
|
"<br>pursuing accurate overall elapsed time unless paused or speed-adjusted."
|
||||||
|
"<br><br>This may be useful for internet play."
|
||||||
|
"<br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"));
|
||||||
|
timing_group_layout->addWidget(correct_time_drift);
|
||||||
|
|
||||||
auto* clock_override = new QGroupBox(tr("Clock Override"));
|
auto* clock_override = new QGroupBox(tr("Clock Override"));
|
||||||
auto* clock_override_layout = new QVBoxLayout();
|
auto* clock_override_layout = new QVBoxLayout();
|
||||||
clock_override->setLayout(clock_override_layout);
|
clock_override->setLayout(clock_override_layout);
|
||||||
@ -103,12 +116,24 @@ void AdvancedPane::CreateLayout()
|
|||||||
cpu_clock_override_slider_layout->setContentsMargins(0, 0, 0, 0);
|
cpu_clock_override_slider_layout->setContentsMargins(0, 0, 0, 0);
|
||||||
clock_override_layout->addLayout(cpu_clock_override_slider_layout);
|
clock_override_layout->addLayout(cpu_clock_override_slider_layout);
|
||||||
|
|
||||||
m_cpu_clock_override_slider = new QSlider(Qt::Horizontal);
|
m_cpu_clock_override_slider = new ConfigFloatSlider(0.01f, 4.0f, Config::MAIN_OVERCLOCK, 0.01f);
|
||||||
m_cpu_clock_override_slider->setRange(1, 400);
|
|
||||||
cpu_clock_override_slider_layout->addWidget(m_cpu_clock_override_slider);
|
cpu_clock_override_slider_layout->addWidget(m_cpu_clock_override_slider);
|
||||||
|
|
||||||
m_cpu_clock_override_slider_label = new QLabel();
|
m_cpu_label = new QLabel();
|
||||||
cpu_clock_override_slider_layout->addWidget(m_cpu_clock_override_slider_label);
|
cpu_clock_override_slider_layout->addWidget(m_cpu_label);
|
||||||
|
|
||||||
|
std::function<void()> cpu_text = [this]() {
|
||||||
|
const float multi = Config::Get(Config::MAIN_OVERCLOCK);
|
||||||
|
const int percent = static_cast<int>(std::round(multi * 100.f));
|
||||||
|
const int core_clock =
|
||||||
|
Core::System::GetInstance().GetSystemTimers().GetTicksPerSecond() / std::pow(10, 6);
|
||||||
|
const int clock = static_cast<int>(std::round(multi * core_clock));
|
||||||
|
m_cpu_label->setText(tr("%1% (%2 MHz)").arg(QString::number(percent), QString::number(clock)));
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu_text();
|
||||||
|
connect(m_cpu_clock_override_slider, &QSlider::valueChanged, this,
|
||||||
|
[this, cpu_text]() { cpu_text(); });
|
||||||
|
|
||||||
m_cpu_clock_override_checkbox->SetDescription(
|
m_cpu_clock_override_checkbox->SetDescription(
|
||||||
tr("Adjusts the emulated CPU's clock rate.<br><br>"
|
tr("Adjusts the emulated CPU's clock rate.<br><br>"
|
||||||
@ -135,12 +160,25 @@ void AdvancedPane::CreateLayout()
|
|||||||
vi_rate_override_slider_layout->setContentsMargins(0, 0, 0, 0);
|
vi_rate_override_slider_layout->setContentsMargins(0, 0, 0, 0);
|
||||||
vi_rate_override_layout->addLayout(vi_rate_override_slider_layout);
|
vi_rate_override_layout->addLayout(vi_rate_override_slider_layout);
|
||||||
|
|
||||||
m_vi_rate_override_slider = new QSlider(Qt::Horizontal);
|
m_vi_rate_override_slider = new ConfigFloatSlider(0.01f, 5.0f, Config::MAIN_VI_OVERCLOCK, 0.01f);
|
||||||
m_vi_rate_override_slider->setRange(1, 500);
|
|
||||||
vi_rate_override_slider_layout->addWidget(m_vi_rate_override_slider);
|
vi_rate_override_slider_layout->addWidget(m_vi_rate_override_slider);
|
||||||
|
|
||||||
m_vi_rate_override_slider_label = new QLabel();
|
m_vi_label = new QLabel();
|
||||||
vi_rate_override_slider_layout->addWidget(m_vi_rate_override_slider_label);
|
vi_rate_override_slider_layout->addWidget(m_vi_label);
|
||||||
|
std::function<void()> vi_text = [this]() {
|
||||||
|
const int percent =
|
||||||
|
static_cast<int>(std::round(Config::Get(Config::MAIN_VI_OVERCLOCK) * 100.f));
|
||||||
|
float vps =
|
||||||
|
static_cast<float>(Core::System::GetInstance().GetVideoInterface().GetTargetRefreshRate());
|
||||||
|
if (vps == 0.0f || !Config::Get(Config::MAIN_VI_OVERCLOCK_ENABLE))
|
||||||
|
vps = 59.94f * Config::Get(Config::MAIN_VI_OVERCLOCK);
|
||||||
|
m_vi_label->setText(
|
||||||
|
tr("%1% (%2 VPS)").arg(QString::number(percent), QString::number(vps, 'f', 2)));
|
||||||
|
};
|
||||||
|
|
||||||
|
vi_text();
|
||||||
|
connect(m_vi_rate_override_slider, &QSlider::valueChanged, this,
|
||||||
|
[this, vi_text]() { vi_text(); });
|
||||||
|
|
||||||
m_vi_rate_override_checkbox->SetDescription(
|
m_vi_rate_override_checkbox->SetDescription(
|
||||||
tr("Adjusts the VBI frequency. Also adjusts the emulated CPU's "
|
tr("Adjusts the VBI frequency. Also adjusts the emulated CPU's "
|
||||||
@ -167,27 +205,34 @@ void AdvancedPane::CreateLayout()
|
|||||||
mem1_override_slider_layout->setContentsMargins(0, 0, 0, 0);
|
mem1_override_slider_layout->setContentsMargins(0, 0, 0, 0);
|
||||||
ram_override_layout->addLayout(mem1_override_slider_layout);
|
ram_override_layout->addLayout(mem1_override_slider_layout);
|
||||||
|
|
||||||
m_mem1_override_slider = new QSlider(Qt::Horizontal);
|
m_mem1_override_slider = new ConfigSliderU32(24, 64, Config::MAIN_MEM1_SIZE, 0x100000);
|
||||||
m_mem1_override_slider->setRange(24, 64);
|
|
||||||
mem1_override_slider_layout->addWidget(m_mem1_override_slider);
|
mem1_override_slider_layout->addWidget(m_mem1_override_slider);
|
||||||
|
|
||||||
m_mem1_override_slider_label = new QLabel();
|
m_mem1_label =
|
||||||
mem1_override_slider_layout->addWidget(m_mem1_override_slider_label);
|
new QLabel(tr("%1 MB (MEM1)").arg(QString::number(m_mem1_override_slider->value())));
|
||||||
|
mem1_override_slider_layout->addWidget(m_mem1_label);
|
||||||
|
connect(m_mem1_override_slider, &QSlider::valueChanged, this, [this](int value) {
|
||||||
|
m_mem1_label->setText(tr("%1 MB (MEM1)").arg(QString::number(value)));
|
||||||
|
});
|
||||||
|
|
||||||
auto* mem2_override_slider_layout = new QHBoxLayout();
|
auto* mem2_override_slider_layout = new QHBoxLayout();
|
||||||
mem2_override_slider_layout->setContentsMargins(0, 0, 0, 0);
|
mem2_override_slider_layout->setContentsMargins(0, 0, 0, 0);
|
||||||
ram_override_layout->addLayout(mem2_override_slider_layout);
|
ram_override_layout->addLayout(mem2_override_slider_layout);
|
||||||
|
|
||||||
m_mem2_override_slider = new QSlider(Qt::Horizontal);
|
m_mem2_override_slider = new ConfigSliderU32(64, 128, Config::MAIN_MEM2_SIZE, 0x100000);
|
||||||
m_mem2_override_slider->setRange(64, 128);
|
|
||||||
mem2_override_slider_layout->addWidget(m_mem2_override_slider);
|
mem2_override_slider_layout->addWidget(m_mem2_override_slider);
|
||||||
|
|
||||||
m_mem2_override_slider_label = new QLabel();
|
m_mem2_label =
|
||||||
mem2_override_slider_layout->addWidget(m_mem2_override_slider_label);
|
new QLabel(tr("%1 MB (MEM2)").arg(QString::number(m_mem2_override_slider->value())));
|
||||||
|
mem2_override_slider_layout->addWidget(m_mem2_label);
|
||||||
|
connect(m_mem2_override_slider, &QSlider::valueChanged, this, [this](int value) {
|
||||||
|
m_mem2_label->setText(tr("%1 MB (MEM2)").arg(QString::number(value)));
|
||||||
|
});
|
||||||
|
|
||||||
m_ram_override_checkbox->SetDescription(
|
m_ram_override_checkbox->SetDescription(
|
||||||
tr("Adjusts the amount of RAM in the emulated console.<br><br>"
|
tr("Adjusts the amount of RAM in the emulated console.<br><br>"
|
||||||
"<b>WARNING</b>: Enabling this will completely break many games.<br>Only a small number "
|
"<b>WARNING</b>: Enabling this will completely break many games.<br>Only a small "
|
||||||
|
"number "
|
||||||
"of games can benefit from this."
|
"of games can benefit from this."
|
||||||
"<br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"));
|
"<br><br><dolphin_emphasis>If unsure, leave this unchecked.</dolphin_emphasis>"));
|
||||||
|
|
||||||
@ -227,36 +272,12 @@ void AdvancedPane::ConnectLayout()
|
|||||||
Config::SetBaseOrCurrent(Config::MAIN_CPU_CORE, cpu_cores[index]);
|
Config::SetBaseOrCurrent(Config::MAIN_CPU_CORE, cpu_cores[index]);
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(m_cpu_clock_override_slider, &QSlider::valueChanged, [this](int oc_factor) {
|
|
||||||
const float factor = m_cpu_clock_override_slider->value() / 100.f;
|
|
||||||
Config::SetBaseOrCurrent(Config::MAIN_OVERCLOCK, factor);
|
|
||||||
Update();
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(m_vi_rate_override_slider, &QSlider::valueChanged, [this](int oc_factor) {
|
|
||||||
const float factor = m_vi_rate_override_slider->value() / 100.f;
|
|
||||||
Config::SetBaseOrCurrent(Config::MAIN_VI_OVERCLOCK, factor);
|
|
||||||
Update();
|
|
||||||
});
|
|
||||||
|
|
||||||
m_ram_override_checkbox->setChecked(Config::Get(Config::MAIN_RAM_OVERRIDE_ENABLE));
|
m_ram_override_checkbox->setChecked(Config::Get(Config::MAIN_RAM_OVERRIDE_ENABLE));
|
||||||
connect(m_ram_override_checkbox, &QCheckBox::toggled, [this](bool enable_ram_override) {
|
connect(m_ram_override_checkbox, &QCheckBox::toggled, [this](bool enable_ram_override) {
|
||||||
Config::SetBaseOrCurrent(Config::MAIN_RAM_OVERRIDE_ENABLE, enable_ram_override);
|
Config::SetBaseOrCurrent(Config::MAIN_RAM_OVERRIDE_ENABLE, enable_ram_override);
|
||||||
Update();
|
Update();
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(m_mem1_override_slider, &QSlider::valueChanged, [this](int slider_value) {
|
|
||||||
const u32 mem1_size = m_mem1_override_slider->value() * 0x100000;
|
|
||||||
Config::SetBaseOrCurrent(Config::MAIN_MEM1_SIZE, mem1_size);
|
|
||||||
Update();
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(m_mem2_override_slider, &QSlider::valueChanged, [this](int slider_value) {
|
|
||||||
const u32 mem2_size = m_mem2_override_slider->value() * 0x100000;
|
|
||||||
Config::SetBaseOrCurrent(Config::MAIN_MEM2_SIZE, mem2_size);
|
|
||||||
Update();
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(m_custom_rtc_datetime, &QDateTimeEdit::dateTimeChanged, [this](QDateTime date_time) {
|
connect(m_custom_rtc_datetime, &QDateTimeEdit::dateTimeChanged, [this](QDateTime date_time) {
|
||||||
Config::SetBaseOrCurrent(Config::MAIN_CUSTOM_RTC_VALUE,
|
Config::SetBaseOrCurrent(Config::MAIN_CUSTOM_RTC_VALUE,
|
||||||
static_cast<u32>(date_time.toSecsSinceEpoch()));
|
static_cast<u32>(date_time.toSecsSinceEpoch()));
|
||||||
@ -295,21 +316,7 @@ void AdvancedPane::Update()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_cpu_clock_override_slider->setEnabled(enable_cpu_clock_override_widgets);
|
m_cpu_clock_override_slider->setEnabled(enable_cpu_clock_override_widgets);
|
||||||
m_cpu_clock_override_slider_label->setEnabled(enable_cpu_clock_override_widgets);
|
m_cpu_label->setEnabled(enable_cpu_clock_override_widgets);
|
||||||
|
|
||||||
{
|
|
||||||
const QSignalBlocker blocker(m_cpu_clock_override_slider);
|
|
||||||
m_cpu_clock_override_slider->setValue(
|
|
||||||
static_cast<int>(std::round(Config::Get(Config::MAIN_OVERCLOCK) * 100.f)));
|
|
||||||
}
|
|
||||||
|
|
||||||
m_cpu_clock_override_slider_label->setText([] {
|
|
||||||
int core_clock =
|
|
||||||
Core::System::GetInstance().GetSystemTimers().GetTicksPerSecond() / std::pow(10, 6);
|
|
||||||
int percent = static_cast<int>(std::round(Config::Get(Config::MAIN_OVERCLOCK) * 100.f));
|
|
||||||
int clock = static_cast<int>(std::round(Config::Get(Config::MAIN_OVERCLOCK) * core_clock));
|
|
||||||
return tr("%1% (%2 MHz)").arg(QString::number(percent), QString::number(clock));
|
|
||||||
}());
|
|
||||||
|
|
||||||
QFont vi_bf = font();
|
QFont vi_bf = font();
|
||||||
vi_bf.setBold(Config::GetActiveLayerForConfig(Config::MAIN_VI_OVERCLOCK_ENABLE) !=
|
vi_bf.setBold(Config::GetActiveLayerForConfig(Config::MAIN_VI_OVERCLOCK_ENABLE) !=
|
||||||
@ -318,53 +325,16 @@ void AdvancedPane::Update()
|
|||||||
m_vi_rate_override_checkbox->setChecked(enable_vi_rate_override_widgets);
|
m_vi_rate_override_checkbox->setChecked(enable_vi_rate_override_widgets);
|
||||||
|
|
||||||
m_vi_rate_override_slider->setEnabled(enable_vi_rate_override_widgets);
|
m_vi_rate_override_slider->setEnabled(enable_vi_rate_override_widgets);
|
||||||
m_vi_rate_override_slider_label->setEnabled(enable_vi_rate_override_widgets);
|
m_vi_label->setEnabled(enable_vi_rate_override_widgets);
|
||||||
|
|
||||||
{
|
|
||||||
const QSignalBlocker blocker(m_vi_rate_override_slider);
|
|
||||||
m_vi_rate_override_slider->setValue(
|
|
||||||
static_cast<int>(std::round(Config::Get(Config::MAIN_VI_OVERCLOCK) * 100.f)));
|
|
||||||
}
|
|
||||||
|
|
||||||
m_vi_rate_override_slider_label->setText([] {
|
|
||||||
int percent = static_cast<int>(std::round(Config::Get(Config::MAIN_VI_OVERCLOCK) * 100.f));
|
|
||||||
float vps =
|
|
||||||
static_cast<float>(Core::System::GetInstance().GetVideoInterface().GetTargetRefreshRate());
|
|
||||||
if (vps == 0.0f || !Config::Get(Config::MAIN_VI_OVERCLOCK_ENABLE))
|
|
||||||
vps = 59.94f * Config::Get(Config::MAIN_VI_OVERCLOCK);
|
|
||||||
return tr("%1% (%2 VPS)").arg(QString::number(percent), QString::number(vps, 'f', 2));
|
|
||||||
}());
|
|
||||||
|
|
||||||
m_ram_override_checkbox->setEnabled(is_uninitialized);
|
m_ram_override_checkbox->setEnabled(is_uninitialized);
|
||||||
SignalBlocking(m_ram_override_checkbox)->setChecked(enable_ram_override_widgets);
|
SignalBlocking(m_ram_override_checkbox)->setChecked(enable_ram_override_widgets);
|
||||||
|
|
||||||
m_mem1_override_slider->setEnabled(enable_ram_override_widgets && is_uninitialized);
|
m_mem1_override_slider->setEnabled(enable_ram_override_widgets && is_uninitialized);
|
||||||
m_mem1_override_slider_label->setEnabled(enable_ram_override_widgets && is_uninitialized);
|
m_mem1_label->setEnabled(enable_ram_override_widgets && is_uninitialized);
|
||||||
|
|
||||||
{
|
|
||||||
const QSignalBlocker blocker(m_mem1_override_slider);
|
|
||||||
const u32 mem1_size = Config::Get(Config::MAIN_MEM1_SIZE) / 0x100000;
|
|
||||||
m_mem1_override_slider->setValue(mem1_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_mem1_override_slider_label->setText([] {
|
|
||||||
const u32 mem1_size = Config::Get(Config::MAIN_MEM1_SIZE) / 0x100000;
|
|
||||||
return tr("%1 MB (MEM1)").arg(QString::number(mem1_size));
|
|
||||||
}());
|
|
||||||
|
|
||||||
m_mem2_override_slider->setEnabled(enable_ram_override_widgets && is_uninitialized);
|
m_mem2_override_slider->setEnabled(enable_ram_override_widgets && is_uninitialized);
|
||||||
m_mem2_override_slider_label->setEnabled(enable_ram_override_widgets && is_uninitialized);
|
m_mem2_label->setEnabled(enable_ram_override_widgets && is_uninitialized);
|
||||||
|
|
||||||
{
|
|
||||||
const QSignalBlocker blocker(m_mem2_override_slider);
|
|
||||||
const u32 mem2_size = Config::Get(Config::MAIN_MEM2_SIZE) / 0x100000;
|
|
||||||
m_mem2_override_slider->setValue(mem2_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
m_mem2_override_slider_label->setText([] {
|
|
||||||
const u32 mem2_size = Config::Get(Config::MAIN_MEM2_SIZE) / 0x100000;
|
|
||||||
return tr("%1 MB (MEM2)").arg(QString::number(mem2_size));
|
|
||||||
}());
|
|
||||||
|
|
||||||
m_custom_rtc_checkbox->setEnabled(is_uninitialized);
|
m_custom_rtc_checkbox->setEnabled(is_uninitialized);
|
||||||
SignalBlocking(m_custom_rtc_checkbox)->setChecked(Config::Get(Config::MAIN_CUSTOM_RTC_ENABLE));
|
SignalBlocking(m_custom_rtc_checkbox)->setChecked(Config::Get(Config::MAIN_CUSTOM_RTC_ENABLE));
|
||||||
|
@ -8,6 +8,9 @@
|
|||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
|
|
||||||
class ConfigBool;
|
class ConfigBool;
|
||||||
|
class ConfigFloatSlider;
|
||||||
|
class ConfigSlider;
|
||||||
|
class ConfigSliderU32;
|
||||||
class QCheckBox;
|
class QCheckBox;
|
||||||
class QComboBox;
|
class QComboBox;
|
||||||
class QLabel;
|
class QLabel;
|
||||||
@ -36,19 +39,19 @@ private:
|
|||||||
ConfigBool* m_pause_on_panic_checkbox;
|
ConfigBool* m_pause_on_panic_checkbox;
|
||||||
ConfigBool* m_accurate_cpu_cache_checkbox;
|
ConfigBool* m_accurate_cpu_cache_checkbox;
|
||||||
ConfigBool* m_cpu_clock_override_checkbox;
|
ConfigBool* m_cpu_clock_override_checkbox;
|
||||||
QSlider* m_cpu_clock_override_slider;
|
ConfigFloatSlider* m_cpu_clock_override_slider;
|
||||||
QLabel* m_cpu_clock_override_slider_label;
|
QLabel* m_cpu_label;
|
||||||
|
|
||||||
ConfigBool* m_vi_rate_override_checkbox;
|
ConfigBool* m_vi_rate_override_checkbox;
|
||||||
QSlider* m_vi_rate_override_slider;
|
ConfigFloatSlider* m_vi_rate_override_slider;
|
||||||
QLabel* m_vi_rate_override_slider_label;
|
QLabel* m_vi_label;
|
||||||
|
|
||||||
ConfigBool* m_custom_rtc_checkbox;
|
ConfigBool* m_custom_rtc_checkbox;
|
||||||
QDateTimeEdit* m_custom_rtc_datetime;
|
QDateTimeEdit* m_custom_rtc_datetime;
|
||||||
|
|
||||||
ConfigBool* m_ram_override_checkbox;
|
ConfigBool* m_ram_override_checkbox;
|
||||||
QSlider* m_mem1_override_slider;
|
ConfigSliderU32* m_mem1_override_slider;
|
||||||
QLabel* m_mem1_override_slider_label;
|
QLabel* m_mem1_label;
|
||||||
QSlider* m_mem2_override_slider;
|
ConfigSliderU32* m_mem2_override_slider;
|
||||||
QLabel* m_mem2_override_slider_label;
|
QLabel* m_mem2_label;
|
||||||
};
|
};
|
||||||
|
@ -95,7 +95,6 @@ void BroadbandAdapterSettingsDialog::InitControls()
|
|||||||
}
|
}
|
||||||
|
|
||||||
setWindowTitle(window_title);
|
setWindowTitle(window_title);
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
m_address_input = new QLineEdit(current_address);
|
m_address_input = new QLineEdit(current_address);
|
||||||
m_address_input->setPlaceholderText(address_placeholder);
|
m_address_input->setPlaceholderText(address_placeholder);
|
||||||
|
@ -42,7 +42,6 @@ USBDeviceAddToWhitelistDialog::USBDeviceAddToWhitelistDialog(QWidget* parent) :
|
|||||||
void USBDeviceAddToWhitelistDialog::InitControls()
|
void USBDeviceAddToWhitelistDialog::InitControls()
|
||||||
{
|
{
|
||||||
setWindowTitle(tr("Add New USB Device"));
|
setWindowTitle(tr("Add New USB Device"));
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
m_whitelist_buttonbox = new QDialogButtonBox();
|
m_whitelist_buttonbox = new QDialogButtonBox();
|
||||||
auto* add_button = new QPushButton(tr("Add"));
|
auto* add_button = new QPushButton(tr("Add"));
|
||||||
|
@ -45,7 +45,6 @@ ControllerEmu::InputOverrideFunction InputOverrider::GetInputOverrideFunction()
|
|||||||
|
|
||||||
TASInputWindow::TASInputWindow(QWidget* parent) : QDialog(parent)
|
TASInputWindow::TASInputWindow(QWidget* parent) : QDialog(parent)
|
||||||
{
|
{
|
||||||
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
setWindowIcon(Resources::GetAppIcon());
|
setWindowIcon(Resources::GetAppIcon());
|
||||||
|
|
||||||
QGridLayout* settings_layout = new QGridLayout;
|
QGridLayout* settings_layout = new QGridLayout;
|
||||||
|
@ -59,7 +59,6 @@ void Updater::OnUpdateAvailable(const NewVersionInformation& info)
|
|||||||
QDialog* dialog = new QDialog(m_parent);
|
QDialog* dialog = new QDialog(m_parent);
|
||||||
dialog->setAttribute(Qt::WA_DeleteOnClose, true);
|
dialog->setAttribute(Qt::WA_DeleteOnClose, true);
|
||||||
dialog->setWindowTitle(tr("Update available"));
|
dialog->setWindowTitle(tr("Update available"));
|
||||||
dialog->setWindowFlags(dialog->windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
|
|
||||||
auto* label = new QLabel(
|
auto* label = new QLabel(
|
||||||
tr("<h2>A new version of Dolphin is available!</h2>Dolphin %1 is available for "
|
tr("<h2>A new version of Dolphin is available!</h2>Dolphin %1 is available for "
|
||||||
|
@ -96,7 +96,6 @@ static WiiUtils::UpdateResult ShowProgress(QWidget* parent, Callable function, A
|
|||||||
UpdateProgressDialog dialog{parent};
|
UpdateProgressDialog dialog{parent};
|
||||||
dialog.setLabelText(QObject::tr("Preparing to update...\nThis can take a while."));
|
dialog.setLabelText(QObject::tr("Preparing to update...\nThis can take a while."));
|
||||||
dialog.setWindowTitle(QObject::tr("Updating"));
|
dialog.setWindowTitle(QObject::tr("Updating"));
|
||||||
dialog.setWindowFlags(dialog.windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
|
||||||
// QProgressDialog doesn't set its minimum size correctly.
|
// QProgressDialog doesn't set its minimum size correctly.
|
||||||
dialog.setMinimumSize(360, 150);
|
dialog.setMinimumSize(360, 150);
|
||||||
|
|
||||||
|
@ -1007,6 +1007,12 @@ ShaderCode GeneratePixelShaderCode(APIType api_type, const ShaderHostConfig& hos
|
|||||||
out.Write("\tfrag_input.tex{0} = tex{0};\n", i);
|
out.Write("\tfrag_input.tex{0} = tex{0};\n", i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize other texture coordinates that are unused
|
||||||
|
for (u32 i = uid_data->genMode_numtexgens; i < 8; i++)
|
||||||
|
{
|
||||||
|
out.Write("\tfrag_input.tex{0} = vec3(0, 0, 0);\n", i);
|
||||||
|
}
|
||||||
|
|
||||||
if (!custom_contents.shader.empty())
|
if (!custom_contents.shader.empty())
|
||||||
GenerateCustomLighting(&out, uid_data->lighting);
|
GenerateCustomLighting(&out, uid_data->lighting);
|
||||||
|
|
||||||
@ -2061,11 +2067,7 @@ static void WriteFragmentDefinitions(APIType api_type, const ShaderHostConfig& h
|
|||||||
out.Write("\tint layer;\n");
|
out.Write("\tint layer;\n");
|
||||||
out.Write("\tvec3 normal;\n");
|
out.Write("\tvec3 normal;\n");
|
||||||
out.Write("\tvec3 position;\n");
|
out.Write("\tvec3 position;\n");
|
||||||
for (u32 i = 0; i < uid_data->genMode_numtexgens; i++)
|
for (u32 i = 0; i < 8; i++)
|
||||||
{
|
|
||||||
out.Write("\tvec3 tex{};\n", i);
|
|
||||||
}
|
|
||||||
for (u32 i = uid_data->genMode_numtexgens; i < 8; i++)
|
|
||||||
{
|
{
|
||||||
out.Write("\tvec3 tex{};\n", i);
|
out.Write("\tvec3 tex{};\n", i);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user